如何让 NGINX 在代理通过时读取静态文件目录

如何让 NGINX 在代理通过时读取静态文件目录

这是我的 nginx 配置:

server {
        listen 80;
        server_name example.com;
        location /assets {
                root /var/www/frappe/sites/assets;
                try_files $uri $uri/ =404;
        }
        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-NginX-Proxy true;

                proxy_pass http://127.0.0.1:8000;
                proxy_redirect off;
        }

}

我希望 /assets 目录由 NGINX 处理,而其他所有内容由在 8000 上运行的 python 服务器处理。但是,我在 assets 目录上仍然得到 404。

我做错了什么?www-data 可以读取 assets 目录。

答案1

你明白了吗全部对 下的资源的请求出现 404 错误/assets?我猜你可能想改为rootalias因为location /assets会将root整个请求路径附加到指定的目录,这意味着 nginx 正在寻找/var/www/frappe/sites/assets/assets/site.css,例如 。

答案2

使用alias而不是root。你甚至不需要try_files

        location /assets/ {
                alias /var/www/frappe/sites/assets/;
        }

相关内容