启用nginx浏览器捕获特定的url

我怎样才能启用特定url的nginx catch? 我有一个Django的Web应用程序,我把我的静态文件,如CSS,JavaScript和…在一个名为静态文件夹,我可以访问他们通过http://example.com/static/ ,我想configurationNginx N顺序只能从这个url捕获这些文件。 我读过http://www.nginxtips.com/how-to-enable-browser-cache-static-files-on-nginx/,但是这个选项没有在那里解释。 我试着下面的configuration,并重新启动我的ngnix服务器,但我有错误。 这是我的sites-available/defaultconfiguration文件。 有什么问题?

 server { listen 80; listen 443 ssl; server_name www.example.com example.com; ssl_certificate /var/www/example/ssl/ssl.crt; ssl_certificate_key /var/www/example/ssl/ssl.key; location /static (jpg|jpeg|png|gif|ico|css|js)$ { alias /var/www/example/static; expires 3d; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } location /media { alias /var/www/example/media; } location / { proxy_pass http://127.0.0.1:8000; } } 

这是nginx日志文件内容…

 2014/03/07 13:02:28 [error] 25189#0: *22 open() "/etc/nginx/html/static/css/wait.css" failed (2: No such file or directory), client: 2.178.27.157, server: www.example.com, request: "GET /static/css/wait.css HTTP/1.1", host: "example.com", referrer: "http://example.com/" 2014/03/07 13:02:28 [error] 25189#0: *23 open() "/etc/nginx/html/static/img/infographi.png" failed (2: No such file or directory), client: 2.178.27.157, server: www.example.com, request: "GET /static/img/infographi.png HTTP/1.1", host: "example.com", referrer: "http://example.com/" 2014/03/07 13:02:29 [error] 25189#0: *23 open() "/etc/nginx/html/favicon.ico" failed (2: No such file or directory), client: 2.178.27.157, server: www.example.com, request: "GET /favicon.ico HTTP/1.1", host: "example.com" 2014/03/07 13:08:41 [emerg] 25220#0: invalid location modifier "/static" in /etc/nginx/sites-enabled/default:8 2014/03/07 13:08:41 [emerg] 25221#0: invalid location modifier "/static" in /etc/nginx/sites-enabled/default:8 2014/03/07 13:09:50 [emerg] 25255#0: invalid location modifier "/static" in /etc/nginx/sites-enabled/default:8 2014/03/07 13:09:50 [emerg] 25256#0: invalid location modifier "/static" in /etc/nginx/sites-enabled/default:8 

从nginx维基看来,你有一个“/静态”和你的正则expression式模式之间的空间。 位置只需要一个“uri”参数,而不是两个,而nginx会将该空间解释为参数分隔符。

你也需要告诉一个你想用正则expression式与'〜'或'〜*'修饰符匹配的位置块。

你可以试试这个

 location ~* "/static.*(jpg|jpeg|png|gif|ico|css|js)$" { 

而不是你有什么,看看是否这样做你想要的。

你在这个文件夹中有其他文件吗? 我不这样做,或者如果可以让他们暴露你可以简化configuration:

 server { listen 80; listen 443 ssl; server_name www.example.com example.com; ssl_certificate /var/www/example/ssl/ssl.crt; ssl_certificate_key /var/www/example/ssl/ssl.key; root /var/www/example; location / { proxy_pass http://127.0.0.1:8000; } location /media/ { # it's ok to have empty location } location /static/ { expires 3d; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } }