【问题标题】:Prevent nginx from adding extra slashes防止 nginx 添加额外的斜杠
【发布时间】:2021-08-24 13:25:52
【问题描述】:

我希望我的 nginx 配置重定向所有传入的请求

myServer.com/myApplication/doSomething -> myServer.com:7080/doSomething

myServer.com/myApplication/doSomethingElse -> myServer.com:7080/doSomethingElse

我在阅读this帖子后想出了以下解决方案:

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

提前致谢。

【问题讨论】:

    标签: nginx proxy nginx-config


    【解决方案1】:

    看起来我只需要在该位置的末尾添加一个/,这样它就会被正确地替换掉。

    location /myApplication/{
      proxy_pass http://127.0.0.1:7080/;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2023-04-11
      • 1970-01-01
      • 2021-04-18
      • 2011-10-26
      相关资源
      最近更新 更多