Nginx反向代理在Windows下丢失URL路径末尾点问题排查
问题原因及解决办法
原因分析
Windows平台的Nginx受系统文件命名规则限制(Windows不允许文件名/目录名以点结尾),其默认的URL路径处理逻辑会自动移除URL各段末尾的点。而Linux系统无此文件命名限制,所以相同配置下Linux环境不会出现该问题。直接访问Go后端时,请求路径未经过Nginx的Windows特有的路径处理,因此参数正常。
解决办法
修改Nginx的location配置,强制传递原始请求路径,绕过Windows平台的自动处理逻辑:
server { listen 443 ssl; server_name testing.com; ssl_certificate "C:/nginx/testing.crt"; ssl_certificate_key "C:/nginx/testing.key"; location / { merge_slashes off; # 关闭斜杠合并,确保路径结构完整 proxy_pass http://127.0.0.1:8888$request_uri; # 直接传递原始请求URI } }
配置说明
merge_slashes off;:禁用Nginx自动合并路径中的多个斜杠,同时避免其对路径末尾点的自动清理(该参数在Windows平台会影响末尾点的处理逻辑)。proxy_pass http://127.0.0.1:8888$request_uri;:使用$request_uri变量直接传递客户端的原始请求路径,替代Nginx默认的路径拼接逻辑,确保包含末尾点的URL完整传递到后端Go服务。
修改配置后,重启Nginx服务,再次访问带末尾点的URL,后端Go服务即可收到完整的请求路径。
内容的提问来源于stack exchange,提问作者mrfentonz
相关产品推荐
相关产品推荐

