我想从同一台服务器提供多个应用程序,通过nginx进行反向代理。我希望这些应用程序可通过单个域名与子uris一起使用。
e.g。
www.mydomain.com/nodejs
=>由nginx监听端口80并通过端口3001上运行的node.js应用程序捕获
www.mydomain.com/rails
=> nginx收听端口80并通过端口3002运行的rails应用程序捕获
我的第一个尝试是从两个上游开始:
# /etc/nginx/sites-available/mydomain.com
upstream nodejs {
server 127.0.0.1:3001;
}
upstream rails {
server 127.0.0.1:3002;
}
server {
listen 80 default deferred;
# What do I put here so that
# mydomain.com/nodejs is proxied to the nodejs upstream and
# mydomain.com/rails is proxied to the rails upstream ???
}
有没有人知道这一点或指出我正确的方向?
答案 0 :(得分:6)
怎么样:
upstream nodejs {
server 127.0.0.1:3001;
}
upstream rails {
server 127.0.0.1:3002;
}
server {
listen 80;
location /nodejs {
proxy_pass http://nodejs;
proxy_redirect off;
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 /rails {
proxy_pass http://rails;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
或者很快:
server {
listen 80;
location /nodejs {
proxy_pass http://127.0.0.1:3001;
proxy_redirect off;
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 /rails {
proxy_pass http://127.0.0.1:3002;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
大多数代理指令都是可选的(您可能只需要proxy_pass
和proxy_redirect
)但很有用。
答案 1 :(得分:0)
关于这个问题,错过了css,js,图像文件,你可以这样做,
如果您使用快速框架。 您需要添加此代码行
app.enable('trust proxy');
此值'信任代理'默认值为禁用。