在我使用location声明它们之后,Nginx无法加载静态文件

时间:2014-09-04 14:09:46

标签: caching nginx gzip system-administration server-administration

我已经配置了Nginx,你可以看到:

server {

    listen 443 ssl;
    ssl on;
    ssl_certificate /etc/nginx/ssl/bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/privateKey.key;

    location /webmin/ {
            proxy_pass http://127.0.0.1:10000;
    }

server {

    listen 80;
    listen 443 ssl;
    ssl_certificate /etc/nginx/ssl/bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/privateKey.key;
    server_name localjob.it;
    access_log off;

    location / {
          alias /webapps/sitoweb/;
    }

现在,如果我继续使用mysite.com,页面会加载CSS,但如果我添加:

    location ~* \.(css|js|gif|jpe?g|png)$ {
          expires 168h;
          add_header Pragma public;
          add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    }

现在,如果我访问mysite.com,该页面无法加载CSS。 我无法理解原因!!

1 个答案:

答案 0 :(得分:2)

Nginx location是独占的,因此您的别名根目录位置不适用于其他location。它也有点滥用,只需在root块中使用server指令。

server {
    listen 80;
    listen 443 ssl;
    ssl_certificate /etc/nginx/ssl/bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/privateKey.key;
    server_name localjob.it;
    access_log off;

    root /webapps/sitoweb;

    location ~* \.(css|js|gif|jpe?g|png)$ {
          expires 168h;
          add_header Pragma public;
          add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    }
}