如何从充当nodejs服务器反向代理的nginx服务器提供静态文件?
问题描述:
我现在nginx的配置是这样的:如何从充当nodejs服务器反向代理的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;
}
}
我非常非常新的nginx的,但起码我知道nginx的比节点/快递服务在静态文件更好。如何配置服务器以便nginx提供静态文件?
答
我解决了它使用这个新的配置:
upstream nodejs {
server localhost:3000;
}
server {
listen 8080;
server_name localhost;
root ~/workspace/test/app;
location/{
try_files $uri $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;
}
}
感谢以下堆栈溢出后:
How to serve all existing static files directly with NGINX, but proxy the rest to a backend server.
答
您可能需要为server
中的另一个location
块设置静态文件。
location /static {
alias /path/to/static/files;
}
这使用alias directive。 然后,您可以点击文件在localhost:8080/static/some_file.css
P.S.您不需要您当前设置的root
或index
。 (root
是一种有轻微difference in usage类似alias
)
如果你要这么居高临下,至少可以把它链接起来,然后我会删除我的曲目estion。我已经看了,而且我很难找到它。 – m0meni 2015-04-01 05:44:49