编辑:更清楚一点,这是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 /
,但我找不到如何执行此操作。
答案 0 :(得分:0)
我的代码没有任何问题。
location / {
已经是"未处理"的默认位置块位置。
这将匹配所有位置:
location / {
# ...
}
这只会匹配根目录:
location = / {
# ...
}
这将匹配/ auth和子目录:
location /auth {
# ...
}
答案 1 :(得分:0)
它必须与nginx请求匹配的方式有关 - 不知何故auth
和authorize
太相似而且会导致nginx问题(不是很好的解释,也许更有经验的nginx内部人员会发出声音在)。 "解决方案"是将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 /
处理