三分之一的 Nginx 路由忽略上游服务器
One out of three Nginx routes ignores upstream server
我已经为 nginx 反向代理配置了三个位置:
location / {
root /var/www/html;
index index.html;
}
location /login {
proxy_pass http://127.0.0.1:9080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /app {
rewrite ^/app/(.*)$ / last;
proxy_pass https://10.11.12.13/1020/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
侦听端口 9080 的服务器重定向到路由 /app/{generated subpath}
。 IP 10.11.12.13
上的服务器处理 {generated subpath}
上的请求。因此,我使用相应的重写规则删除前缀路径 /app
,然后将请求代理到该服务器的 /1020
端点。
出于某种原因,nginx 反向代理不采用 10.11.12.13
上游服务器,而是尝试在本地查找路径:
8888#8888: *470 open() "/var/www/html/html/createCustomer" failed (2: No such file or directory), client: x.x.x.x, server: 10.10.10.10, request: "GET /app/html/createCustomer?tokenId=0xC00FF3 HTTP/1.1", host: "10.10.10.10"
而不是 last
我相信您正在寻找 break
。来自rewrite
documentation
last
stops processing the current set of ngx_http_rewrite_module directives and starts a search for a new location matching the changed URI;
starts a search for a new location matching the changed URi
是您删除 /app/
部分然后与 /
位置匹配时发生的情况。
break
stops processing the current set
我已经为 nginx 反向代理配置了三个位置:
location / {
root /var/www/html;
index index.html;
}
location /login {
proxy_pass http://127.0.0.1:9080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /app {
rewrite ^/app/(.*)$ / last;
proxy_pass https://10.11.12.13/1020/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
侦听端口 9080 的服务器重定向到路由 /app/{generated subpath}
。 IP 10.11.12.13
上的服务器处理 {generated subpath}
上的请求。因此,我使用相应的重写规则删除前缀路径 /app
,然后将请求代理到该服务器的 /1020
端点。
出于某种原因,nginx 反向代理不采用 10.11.12.13
上游服务器,而是尝试在本地查找路径:
8888#8888: *470 open() "/var/www/html/html/createCustomer" failed (2: No such file or directory), client: x.x.x.x, server: 10.10.10.10, request: "GET /app/html/createCustomer?tokenId=0xC00FF3 HTTP/1.1", host: "10.10.10.10"
而不是 last
我相信您正在寻找 break
。来自rewrite
documentation
last
stops processing the current set of ngx_http_rewrite_module directives and starts a search for a new location matching the changed URI;
starts a search for a new location matching the changed URi
是您删除 /app/
部分然后与 /
位置匹配时发生的情况。
break
stops processing the current set