我有一个web2py配置,在nginx之上运行,在为某些静态文件实现浏览器缓存时会产生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”问题的情况下实现浏览器缓存?
答案 0 :(得分:1)
在我看来,您只提供动态内容。此外,nginx
会选择location
块到process a request,并且需要完成。
在您的情况下,uwsgi
块中的location /
配置需要在您添加的任何新动态位置进行复制。例如:
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
语句)。