Nginx静态文件缓存提供404s

时间:2017-05-12 20:43:32

标签: node.js nginx

我尝试了很多不同的东西来使其工作并查看了一堆以前的Nginx配置指南,但我的网站一直给我404所有静态内容。以下是我的配置。

server {
    listen 80 default_server;
    listen [::]:80 default_server;
   server_name mywebsite.com www.mywebsite.com;
    return 301 https://$server_name$request_uri;
}
proxy_cache_path /tmp/nginx levels=1:2 keys_zone=my_zone:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";

server {
        access_log off;
        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2 default_server;
        include snippets/ssl-mywebsite.com.conf;
        include snippets/ssl-params.conf;

        location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
                expires 30d;
                add_header Vary Accept-Encoding;
                access_log off;
        }

        # Pass requests for / to localhost:3000:
        location / {
                proxy_cache my_zone;
                proxy_cache_bypass  $http_cache_control;
                add_header X-Proxy-Cache $upstream_cache_status;
                include proxy_params;

                proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
                proxy_ignore_headers Set-Cookie;
                proxy_hide_header Set-Cookie;
                proxy_hide_header X-powered-by;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://localhost:3000;
                proxy_ssl_session_reuse off;
                proxy_set_header Host $http_host;
                proxy_redirect off;
        }
}

对于更多背景,我的静态文件都存储在公共文件夹中,如:/www/Project/public/css/styles.css或/www/Project/public/images/myimage.jpg

如果我带走了位置〜*。(?:ico | css | js | gif ...),但该网站没有缓存,该网站有效。

有没有人知道发生了什么?

1 个答案:

答案 0 :(得分:0)

想出来。

事实证明,我的根路径是错误的 - 相对于我的项目目录(我的app.js文件所在的位置),它应该与我文件系统上的绝对根目录相关。

E.g。它应该是/ home / mycomputerlogin / www / project / public /

所以在我的〜*。 第一行是 root / home / mycomputerlogin / www / project / public; 之后它运作良好。