是否可以将特定路径的请求传递给其他上游服务器?
这是我的nginx网站配置:
upstream example.org {
server 127.0.0.1:8070;
keepalive 8;
}
server {
listen 0.0.0.0:80;
server_name example.org www.example.org;
access_log /var/log/nginx/example.org.log;
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://example.org;
proxy_redirect off;
}
}
目前,对此站点的请求被重定向到在端口8070上运行的Node.js实例。
我希望此站点的请求具有以 / services 开头的路径,并重定向到在端口8080上运行的另一个Node.js实例。
这可能吗?当然 - 怎么样?
答案 0 :(得分:0)
是的,只需添加另一个位置块:
upstream example.org {
server 127.0.0.1:8070;
keepalive 8;
}
upstream other.example.org {
server 127.0.0.1:8080;
keepalive 8;
}
server {
listen 0.0.0.0:80;
server_name example.org www.example.org;
access_log /var/log/nginx/example.org.log;
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_redirect off;
location / {
proxy_pass http://example.org;
}
location /services {
proxy_pass http://other.example.org;
}
}
注意:我将所有共享代理指令解压缩到服务器块中,以便不会在每个位置块中重复这些指令。如果它们在不同位置之间有所不同,则必须将它们再次移动到位置块...