如何从作为nodejs服务器的反向代理的nginx服务器提供静态文件?

m0m*_*eni 18 nginx node.js

我目前的nginx配置是这样的:

upstream nodejs {
    server 127.0.0.1:3000;
}

server {
    listen 8080;
    server_name localhost;
    root ~/workspace/test/app;
    index index.html;

    location / {
        proxy_pass http://nodejs;
        proxy_set_header Host $host ; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
Run Code Online (Sandbox Code Playgroud)

我对nginx非常新,但至少我知道nginx在提供静态文件方面比node/express更好.如何配置服务器以便nginx提供静态文件?

m0m*_*eni 21

我使用这个新配置解决了它:

upstream nodejs {
    server localhost:3000;
}

server {
    listen 8080;
    server_name localhost;
    root ~/workspace/test/app;

    location / {
        try_files $uri @nodejs;
    }

    location @nodejs {
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_pass http://nodejs;
        proxy_set_header Host $host ; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
Run Code Online (Sandbox Code Playgroud)

感谢以下Stack Overflow帖子:


如何使用NGINX直接提供所有现有静态文件,但将其余部分代理到后端服务器.


San*_*tta 19

您可能希望在静态文件中使用另一个locationserver.

location /static {
  alias /path/to/static/files;
}
Run Code Online (Sandbox Code Playgroud)

这使用别名指令.然后你可以点击文件localhost:8080/static/some_file.css

PS您不需要当前设置的rootindex当前设置的.(root类似于alias使用上略有不同)