防止 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/;
}