使用最新的 nginx,是否可以仅代理缓存特定的 html 状态代码响应?
我们对某些响应使用 410 状态代码。
这些都是根据我们的数据库进行检查的。
当所述内容被标记为永久删除(410)时,发送 410 状态代码。
此内容将永远消失。
我们只想代理缓存这些结果。
这可能吗?
我认为从一个小片段开始是最明智的:
location ^~ /test/ {
proxy_pass http://frontend;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $server_port;
if ( $remote_addr ~* "123.123.123.123" ) {
proxy_cache cache_base;
proxy_cache_valid 720m;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,本质上我们想要做的是基于条件 IF 语句设置代理缓存。
上面的方法不起作用,因为 proxy_cache 在 IF 内部无效。
有谁知道如何根据众多 nginx 内部变量之一的正则表达式匹配来代理缓存?
笔记:
我们希望基于 $remote_addr regexp 基本上禁用/启用 proxy_caching。不指定不同的 proxy_cache 值。
谢谢。
我正在为我们的 1RU Dell R320 服务器寻找在 IOPS 方面具有更高性能的版本。
现在我相当确定:
这应该会提供良好的性能,但如果可能的话,我还想在组合中添加一个 SSD 缓存,但我不确定是否有足够的空间?
根据技术规格,总共只有 4 个 3.5" 驱动器托架可用。
有没有办法在 4x3.5" 驱动器旁边至少安装一个 SSD 驱动器?我希望有一个特殊的位置来放置缓存 SSD 驱动器(尽管从内存来看,我怀疑是否有空间)。或者我是否正确地认为缓存驱动器只是像任何其他驱动器一样“正常”插入的驱动器,但在 PERC 控制器中被指定为 CacheCade 驱动器?
是否也有 4x600GB RAID 10 阵列和 SSD 缓存驱动器的选择?
根据技术规格(最多 8x2.5" 驱动器),也许我需要使用 2.5" SAS 驱动器,另外留出 4 个托架,为 SSD 缓存驱动器留出足够的空间。
有没有人使用 3.5" 驱动器实现了这一点,不知何故?
给出此硬件的用途/要求的图片:
我们目前有几个“内部”VM,在 VMWare ESXi 5.x 主机上运行。但目前我们只有少数主机,这是一个基本设置。
我们最近开始推出 Dell R320 作为共享 ESXi 主机的标准硬件。我更愿意继续使用 R320 以尽量保持我们的硬件(因此我们需要备件、升级、监控支持等)尽可能标准化。必须保留一组不同的驱动器作为备用比将整个备用机箱保留在我们已有的基础上要好。
这些 VM 主要负责我们的内部工具(例如监控、呼叫计费、Intranet 网站)。或共享基础设施;如:DNS、SMTP Relay/Filtering、一小组共享网站;共享 …
如何为特定 URL 启用 nginx 缓存?我有一个 django web 应用程序,我将静态文件(例如 CSS、JavaScript 等)放在名为 static 的文件夹中,我可以通过http://example.com/static/访问它们,并且我想按顺序配置 nginx仅从该 url 捕获这些文件。我读过http://www.nginxtips.com/how-to-enable-browser-cache-static-files-on-nginx/但那里没有解释这个选项。我尝试了下面的配置并重新启动了我的 nginx 服务器,但出现错误。这是我的 sites-available/default配置文件。有什么问题?
server {
listen 80;
listen 443 ssl;
server_name www.example.com example.com;
ssl_certificate /var/www/example/ssl/ssl.crt;
ssl_certificate_key /var/www/example/ssl/ssl.key;
location /static (jpg|jpeg|png|gif|ico|css|js)$ {
alias /var/www/example/static;
expires 3d;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
location /media {
alias /var/www/example/media;
}
location / {
proxy_pass http://127.0.0.1:8000;
}
}
Run Code Online (Sandbox Code Playgroud)
这是 nginx 日志文件内容......
2014/03/07 13:02:28 [error] 25189#0: *22 open() "/etc/nginx/html/static/css/wait.css" failed (2: No …Run Code Online (Sandbox Code Playgroud) 我dig xkcd.com,我得到了这样的东西:
; <<>> DiG 9.9.5-3ubuntu0.1-Ubuntu <<>> xkcd.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52538
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 5
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;xkcd.com. IN A
;; ANSWER SECTION:
xkcd.com. 769 IN A 107.6.106.82
;; AUTHORITY SECTION:
xkcd.com. 87784 IN NS dns3.p03.nsone.net.
xkcd.com. 87784 IN NS dns1.p03.nsone.net.
xkcd.com. 87784 IN NS dns2.p03.nsone.net. …Run Code Online (Sandbox Code Playgroud) 我有自己的带有 CentOS 6 和 nginx 的 VPS,我想启用缓存。为了测试它,如果它成功启用,我使用 Google PageSpeed Insight。我的问题是我没有太多经验,我必须启用缓存以及我可以设置图像的缓存时间等等。这就是我在互联网上找到并尝试过的内容:
/etc/nginx/sites-available并且/etc/nginx/sites-enabled因为它们以某种方式不存在。/etc/nginx/nginx.conf添加include /etc/nginx/sites-enabled/*;}创建文件/etc/nginx/sites-available/my-site.com.conf:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 15d;
}
location ~* \.(pdf)$ {
expires 30d;
}
Run Code Online (Sandbox Code Playgroud)
}
链接conf文件: ln -s /etc/nginx/sites-available/my-site.com.conf /etc/nginx/sites-enabled/my-site.com.conf
service nginx restart我将我的网站用于 WordPress。
因此,每当我使用 PageSpeed Insight 或其他 pagespeed 工具测试我的页面时,它都会说我不为 header.png、javascripts 等使用缓存。但是我没有收到一些错误,即使我检查了nginx -t显示此内容的配置文件:
nginx: the configuration file …Run Code Online (Sandbox Code Playgroud) 所以我将一个 mediawiki 站点迁移到了一个新的服务器上。旧的仍在运行,但数据库已锁定,我每 15 分钟将新内容与 rsync 和 mysqldump 合并。所以我们可以从旧IP读取内容。
现在我将域的 A 记录更改为指向新服务器。3 小时后,当我使用清除缓存的浏览器时,我在新服务器上。
但是,当我使用未清除缓存的浏览器时,我登陆的是旧服务器。
如何告诉浏览器,它应该清除其 dns 缓存,或者 IP 发生了变化?
我有一个服务器配置为通过设置代理:
proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=backcache:8m max_size=20g inactive=7d;
proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
Run Code Online (Sandbox Code Playgroud)
尽管如此,当我启动 nginx 时,我最终也得到了 /var/lib/nginx/proxy。两者都开始填满,最终硬盘驱动器填满。
如果我尝试让我的 proxy_cache_path 指向 /var/lib/nginx/proxy,我会收到错误消息:
nginx: [emerg] the same path name "/var/lib/nginx/proxy" used in /etc/nginx/conf.d/proxy.conf:1 and in /etc/nginx/nginx.conf:62
nginx: configuration file /etc/nginx/nginx.conf test failed
Run Code Online (Sandbox Code Playgroud)
nginx.conf 的第 62 行只是 http{} 部分的结尾,所以我认为这是在抱怨我试图覆盖的“默认”。
我不知道如何禁用这个代理配置,它似乎复制了我设置的显式配置。有没有办法覆盖/删除该默认代理配置?
我在带有 4 个 WD Red SATA HDD(通过 HBA 模式下的 PERC H330 连接)的服务器上使用 RAIDZ1 设置 ZFS(通过 FreeNAS)。
服务器连接到 UPS。
对于 ZFS 和在此设置中,启用每个磁盘的 HD 缓存是否有意义,或者尽管有 UPS,这是否非常危险?