Nginx 可以缓存 conf 文件吗? [关闭]
Posted
技术标签:
【中文标题】Nginx 可以缓存 conf 文件吗? [关闭]【英文标题】:Can Nginx cache conf files? [closed] 【发布时间】:2013-02-16 10:27:22 【问题描述】:我在 centos vps 上使用 apache 将 nginx 设置为前端代理。最近,当我去更改特定网站的配置文件或 nginx.conf 文件本身时,我没有看到任何更改。我已经重新启动了 nginx 和 apache,并清除了 nginx 临时目录。
例如,当我将 gzip_http_version 从 1.1 更改为 1.0 时,我首先注意到了这一点。我检查了我的标题,但没有任何变化。我还可以将随机字符添加到 conf 文件中,一切仍然可以正常工作。
这是一个站点配置文件的示例。
server
error_log /var/log/nginx/vhost-error_log warn;
listen 204.197.248.70:80;
server_name www.website.com;
access_log /usr/local/apache/domlogs/www.website.com-bytes_log bytes_log;
access_log /usr/local/apache/domlogs/www.website.com combined;
root /home/www.website.com/public_html;
location /
location ~.*\.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|html|htm|txt|js|css|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso)$
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
try_files $uri @backend;
error_page 405 = @backend;
add_header X-Cache "HIT from Backend";
proxy_pass http://1.1.1.1.:8081;
include proxy.inc;
location @backend
internal;
proxy_pass http://1.1.1.1:8081;
include proxy.inc;
location ~ .*\.(php|jsp|cgi|pl|py)?$
proxy_pass http://1.1.1.1:8081;
include proxy.inc;
location ~ /\.ht
deny all;
这是我的 nginx.conf 文件
user user;
# no need for more workers in the proxy mode
worker_processes 2;
error_log /var/log/nginx/error.log info;
worker_rlimit_nofile 20480;
events
worker_connections 5120; # increase for busier servers
use epoll; # you should use epoll here for Linux kernels 2.6.x
http
server_name_in_redirect off;
server_names_hash_max_size 10240;
server_names_hash_bucket_size 1024;
include mime.types;
default_type application/octet-stream;
server_tokens off;
# remove/commentout disable_symlinks if_not_owner;if you get Permission denied error
# disable_symlinks if_not_owner;
sendfile off;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 5;
ignore_invalid_headers on;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
reset_timedout_connection on;
connection_pool_size 256;
client_header_buffer_size 256k;
large_client_header_buffers 4 256k;
client_max_body_size 200M;
client_body_buffer_size 128k;
request_pool_size 32k;
output_buffers 4 32k;
postpone_output 1460;
proxy_temp_path /tmp/nginx_proxy/;
client_body_in_file_only on;
log_format bytes_log "$msec $bytes_sent .";
include "/etc/nginx/vhosts/*";
如果我需要添加任何其他附加信息,请告诉我。
【问题讨论】:
浏览器是否支持1.1?如果浏览器指定它只支持 1.0,你的 1.1 将被忽略。 我正在使用最新的 chrome 版本,所以是的。不过,这并不是真正的问题。 不确定这是否能解决您遇到的相同问题,但不妨看看***.com/questions/6236078/…中的一些答案 是的,我已经看过那个话题了。感谢您的建议。 NGINX 配置以及 Apache 配置(除了 .htaccess)在运行时不会被解析。您至少必须重新加载配置以使更改生效。此外,您是否使用了可能在您的设置前面的任何东西,例如 cloudflare? 【参考方案1】:服务器端 nginx 的重启应该已经激活了新的配置(我假设你更改的配置是有效的,尝试nginx -t
来检查,如果你用损坏的配置重新加载 nginx,它会继续运行旧的)
所以我的猜测是问题是由您添加的缓存标头引起的:
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
你基本上是在告诉你下游的一切,在接下来的 30 天里什么都不会改变......
因此,客户端正在使用其浏览器的缓存(或介于两者之间的任何代理的缓存),而不是重新请求(更改的)页面
您可以通过使用wget
或curl
请求更改页面来检查这一点,这应该消除任何代理或浏览器缓存的干扰。
【讨论】:
以上是关于Nginx 可以缓存 conf 文件吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Linux学习总结(四十一)nginx 访问日志配置,网页缓存有效期配置