Nginx反向代理无尾斜杠URL时重定向至上游名称+备份端口的异常问题求助
Nginx反向代理无尾斜杠URL时重定向至上游名称+备份端口的异常问题求助
大家好,我碰到了一个Nginx反向代理的棘手问题,想请教下各位大佬的解决方案。我把Nginx配置成了后端服务的代理,当主后端挂掉时,Nginx会自动切换到备份后端提供内容。目前的问题是:所有带尾斜杠的URL都能正常工作,但一旦去掉URL末尾的斜杠,浏览器就会被重定向到上游块名称加上备份后端端口的地址,完全无法访问。
正常与异常现象
- 能正常访问的URL:
www.chingu.asiawww.chingu.asia/www.chingu.asia/wiki/
- 异常情况:
- 访问
www.chingu.asia/wiki(无尾斜杠)时,浏览器会被重定向到http://chingu.servers:8111/wiki/,这个地址显然无效,根本找不到对应的服务。
- 访问
我的Nginx配置代码
upstream chingu.servers { server 192.168.0.12 fail_timeout=300s max_fails=1; server 192.168.0.10:8111 backup; } server { listen 80; server_name www.chingu.asia; location / { proxy_pass http://chingu.servers/; } } server { listen 192.168.0.10:8111; server_name _; root /...some path.../Chingu; index index.html index.php; location / { try_files $uri $uri/ =404; } location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/run/php/php7.3-fpm.sock; fastcgi_param FQDN true; } }
已尝试的解决办法
- 试过用正则表达式来匹配所有URI的location块
- 也尝试添加了
port_in_redirect off;和absolute_redirect off;配置 - 我也考虑过给每个子目录(比如wiki)单独配置location块,但这样做完全违背了代理的初衷,总不能手动添加所有可能的子目录吧?
想问问大家,我到底漏掉了什么关键配置?有没有通用的解决办法能覆盖所有无尾斜杠的URL情况?
备注:内容来源于stack exchange,提问作者Tygre
相关产品推荐
相关产品推荐

