防止 nginx 添加额外的斜线
Prevent nginx from adding extra slashes
我希望我的 nginx 配置重定向来自
的所有传入请求myServer.com/myApplication/doSomething
-> myServer.com:7080/doSomething
myServer.com/myApplication/doSomethingElse
-> myServer.com:7080/doSomethingElse
我在阅读 this post 后想出了以下解决方案:
location /myApplication{
proxy_pass http://127.0.0.1:7080/;
}
不,我遇到了这种奇怪的行为,当我在服务器上本地测试所有内容时,它似乎工作正常,但是当我从另一台机器调用它时,nginx 似乎在路径中添加了一个额外的斜线。我使用的 curl 请求是这个:
curl --location --request POST 'myServer.com/myApplication/doSomething'
我从我的应用程序中得到的错误信息如下:
{
"timestamp": "2021-06-07T12:33:41.666+0000",
"status": 500,
"error": "Internal Server Error",
"message": "The request was rejected because the URL contained a potentially malicious String \"//\"",
"path": "//doSomething"
}
错误消息说,多余的斜杠有问题,但 curl 请求不包含双斜杠。在本地测试时,一切正常,我使用以下请求:
curl -X POST localhost:7080/doSomething
提前致谢。
看来我只需要在该位置的末尾添加一个 /
,这样它就会被正确地替换掉。
location /myApplication/{
proxy_pass http://127.0.0.1:7080/;
}