使用 nginx/web2py 实现浏览器缓存时静态资产出现 404 错误
404 error for static assets when browser caching is implemented with nginx/web2py
我有一个在 nginx 上运行的 web2py 配置,当为某些静态文件实现浏览器缓存时,它会产生 404 错误。问题已描述 here,我现在在 web2py 上下文中问这个问题,因为这可能与问题相关,或者因为可能有一些特定于 web2py 的解决方法或解决方案。
nginx.conf 看起来像这样:
worker_processes 3;
events {
worker_connections 1024;
}
http {
access_log [/...];
error_log [/...] crit;
include mime.types;
sendfile on;
server {
server_name [...] [...];
return 301 [...] $request_uri;
}
server {
listen 127.0.0.1:[...];
root [/...];
location / {
include uwsgi_params;
uwsgi_pass [.../uwsgi.sock];
}
}
}
在上面的 "location" 子句之前或之后添加以下行会导致服务器停止提供静态文件,这些文件与所讨论的模式相匹配:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1d;
}
在上一个线程中有人建议这可能是一个 uwsgi 问题,尽管该问题可能是由其他问题引起的。如何实现浏览器缓存而不导致“404”问题?
在我看来,您只提供动态内容。另外,nginx
选择location
块到process a request,需要完成。
在您的情况下,location /
块中的 uwsgi
配置需要复制到您可能添加的任何新动态位置。例如:
server {
...
include uwsgi_params;
location / {
uwsgi_pass [.../uwsgi.sock];
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1d;
uwsgi_pass [.../uwsgi.sock];
}
}
您可以将 include
语句移动到外部块并允许其语句被继承(假设它只包含 uwsgi_param
语句)。
我有一个在 nginx 上运行的 web2py 配置,当为某些静态文件实现浏览器缓存时,它会产生 404 错误。问题已描述 here,我现在在 web2py 上下文中问这个问题,因为这可能与问题相关,或者因为可能有一些特定于 web2py 的解决方法或解决方案。
nginx.conf 看起来像这样:
worker_processes 3;
events {
worker_connections 1024;
}
http {
access_log [/...];
error_log [/...] crit;
include mime.types;
sendfile on;
server {
server_name [...] [...];
return 301 [...] $request_uri;
}
server {
listen 127.0.0.1:[...];
root [/...];
location / {
include uwsgi_params;
uwsgi_pass [.../uwsgi.sock];
}
}
}
在上面的 "location" 子句之前或之后添加以下行会导致服务器停止提供静态文件,这些文件与所讨论的模式相匹配:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1d;
}
在上一个线程中有人建议这可能是一个 uwsgi 问题,尽管该问题可能是由其他问题引起的。如何实现浏览器缓存而不导致“404”问题?
在我看来,您只提供动态内容。另外,nginx
选择location
块到process a request,需要完成。
在您的情况下,location /
块中的 uwsgi
配置需要复制到您可能添加的任何新动态位置。例如:
server {
...
include uwsgi_params;
location / {
uwsgi_pass [.../uwsgi.sock];
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1d;
uwsgi_pass [.../uwsgi.sock];
}
}
您可以将 include
语句移动到外部块并允许其语句被继承(假设它只包含 uwsgi_param
语句)。