Nginx为多个位置加载静态文件

时间:2015-05-22 20:56:21

标签: javascript node.js nginx location static-files

我在nginx .conf文件中有多个位置,就像这样。

server {
    ...

    location /api/ {
            client_max_body_size 0;
            proxy_pass http://127.0.0.1:8000/api/;
            proxy_redirect off;
            proxy_read_timeout 5m;
            proxy_set_header Host $host;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X­Forwarded­For $proxy_add_x_forwarded_for;
    }
    ...

    location /cliente/ {
            proxy_pass http://127.0.0.1:4000/;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header HOST $http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_redirect off;
    }

   location / {
            proxy_pass http://127.0.0.1:8000/;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header HOST $http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_redirect off;
    }

在大多数情况下,位置是节点服务器,用于提供自己的静态文件和api rest。

每个节点应用程序中的静态文件都在使用html文件中加载,并按以下方式调用

/my-static-path-1/
/my-static-path-2/

问题:

当服务器尝试加载路径时,这将直接从/加载而不使用自己的子路径,从而导致404错误。

示例:

1)网址http:/myip_sample.com/cliente调用nodejs app thar提供html文件,此文件需要加载/my-static-path/js/sample.js等css脚本。

2)此文件呼叫http:/myip_sample.com/my-static-path/js/sample.js而不是http:/myip_sample.com/ cliente /my-static-path/js/sample.js

我想在不更改任何内容的情况下执行此操作,仅使用nginx conf文件。

提前致谢!

1 个答案:

答案 0 :(得分:0)

将此用于您拥有的每个资产文件夹位置

location /my-static-path-1 {
        alias /location/to/my-static-path-1;
    }

location /my-static-path-2 {
        alias /location/to/my-static-path-2;
    }