nginx为js返回index.html,返回304响应



我有一个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;中的缓存情况并检查结果将非常有帮助。

最新更新