nginx 反向代理 "catch-all" 位置
nginx reverse proxy "catch-all" location
编辑:更清楚地说,这是 nginx 版本 1.13.8。
下面以nginx.conf文件为例:
http {
upstream portal_backend {
server pc-loc43-01:15080;
}
upstream auth_backend {
server pc-loc43-01:16080;
}
server {
listen 9080 default_server;
server_name my-reverse-proxy;
location / {
auth_basic off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_pass http://portal_backend/;
}
location /auth {
auth_basic off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_pass http://auth_backend/auth;
}
}
}
如果无法将请求与任何位置匹配,我想将 nginx 配置为默认为 location /
,但我找不到如何执行此操作。
我没有发现您的代码有任何问题。
location / {
已经是 "unhandled" 个位置的默认位置块。
这将匹配所有位置:
location / {
# ...
}
这将只匹配根:
location = / {
# ...
}
这将匹配 /auth 和子目录:
location /auth {
# ...
}
这一定与 nginx 如何进行请求匹配有关——不知何故 auth
和 authorize
太相似了,它会导致 nginx 问题(不是一个很好的解释,也许有人对 nginx 内部更有经验可以插话)。 "solution" 是将 location /
复制到 location /authorize
,所以现在配置文件如下所示:
...
location / {
auth_basic off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_pass http://portal_backend/;
}
location /authorize {
auth_basic off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_pass http://portal_backend/;
}
...
所有其他路线都按我的预期工作,例如/users
、/customers
、/whatever
都由location /
处理
编辑:更清楚地说,这是 nginx 版本 1.13.8。
下面以nginx.conf文件为例:
http {
upstream portal_backend {
server pc-loc43-01:15080;
}
upstream auth_backend {
server pc-loc43-01:16080;
}
server {
listen 9080 default_server;
server_name my-reverse-proxy;
location / {
auth_basic off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_pass http://portal_backend/;
}
location /auth {
auth_basic off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_pass http://auth_backend/auth;
}
}
}
如果无法将请求与任何位置匹配,我想将 nginx 配置为默认为 location /
,但我找不到如何执行此操作。
我没有发现您的代码有任何问题。
location / {
已经是 "unhandled" 个位置的默认位置块。
这将匹配所有位置:
location / {
# ...
}
这将只匹配根:
location = / {
# ...
}
这将匹配 /auth 和子目录:
location /auth {
# ...
}
这一定与 nginx 如何进行请求匹配有关——不知何故 auth
和 authorize
太相似了,它会导致 nginx 问题(不是一个很好的解释,也许有人对 nginx 内部更有经验可以插话)。 "solution" 是将 location /
复制到 location /authorize
,所以现在配置文件如下所示:
...
location / {
auth_basic off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_pass http://portal_backend/;
}
location /authorize {
auth_basic off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_pass http://portal_backend/;
}
...
所有其他路线都按我的预期工作,例如/users
、/customers
、/whatever
都由location /