我有一个nginx服务器,它在我的浏览器中显示对等请求的200响应
https://server.com/app/static/js/2.8cc049f3.chunk.js
并在服务器日志上显示304
"GET /static/js/2.8cc049f3.chunk.js HTTP/1.1" 304 0 "https://server.com/app"
在server.com
上运行的nginx前面还有另一个nginx正在从路径中删除app
。根据server.com
上的nginx日志,这是正常工作的。static
文件夹在我的根目录/usr/share/nginx/html/
中。
我的浏览器为js
文件接收的内容是index.html
。但是,当我登录到服务器并运行时
curl http://localhost/static/js/2.8cc049f3.chunk.js
我得到了正确的js
内容作为响应,在日志中服务器打印200
"GET /static/js/2.8cc049f3.chunk.js HTTP/1.1" 200 1570391 "-" "curl/7.80.0" "-"
这是我的nginx.conf
server {
listen 80;
root /usr/share/nginx/html/;
index index.html;
add_header X-Frame-Options "SAMEORIGIN";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location / {
try_files $uri $uri/ /index.html;
}
location ~ ^/(static)/ {
gzip_static on;
gzip_types
text/plain
text/xml
text/css
text/comma-separated-values
text/javascript application/x-javascript
application/atom+xml;
expires max;
}
}
我读到304表示文件没有更改,并且告诉您的浏览器使用其本地缓存,所以我清除了浏览器缓存。我还重新启动了nginx,认为第一个请求会在服务器上给出200的响应,但它仍然是304。
基于本地curl请求的成功,我认为我的nginx.conf
没有任何问题。我不知道nginx是否以某种方式将index.html
缓存为我的js
的内容,或者我是否没有正确清除浏览器缓存。
我也很困惑为什么服务器上的响应代码是304,而浏览器中的响应代码却是200。
HTTP304
说"未修改";。这是因为您在我们所说的NGINX服务器前面使用另一个NGINX代理服务器。
第一NGINX正在请求第二NGINX上的资源;嘿,自从你上次问起那个文件就没有被修改过;。
在这种情况下,检查第一个NGINX代理实例的配置或第一个实例和proxy_cache off;
中的缓存情况并检查结果将非常有帮助。