请问Nginx反向代理如何匹配以下路径规则

新手上路,请多包涵

现在需要在一台nginx转发机器上匹配以下的路径(我们的开发测试环境需要统一访问这台机器以达到访问公网外部服务api的目的),这台机器的ip例如为:21.104.38.103

  1. /voice/add
  2. /deposit/authReplay
  3. /deposit/addChainReply
  4. /file/upload

以上四个路径均需反向代理到同一域名地址下,例如:http://wwww.mydemo.com
在公网环境下正确的请求路径是这样的

  1. http://www.mydemo.com/voice/add
  2. http://www.mydemo.com/deposit...
  3. http://www.mydemo.com/deposit...
  4. http://www.mydemo.com/file/up...

在开发测试环境由于需要走Nginx代理,所以代码里请求路径是如下这样配置的:

  1. http://21.104.38.103/voice/add
  2. http://21.104.38.103/deposit/...
  3. http://21.104.38.103/deposit/...
  4. http://21.104.38.103/file/upload
    请教下nginx的location匹配规则如何写才能正确访问?
阅读 2.2k
1 个回答

你需要解决以下问题:

  1. 代码中不能直接使用IP地址请求。虽然可以让Nginx配置匹配IP地址,但那样与生产环境的代码有差异,测试完毕后还需要修改代码,容易出错。正确的做法是,仍然使用域名请求,而在测试环境(比如本地、内网)中,修改DNS记录(本地可以直接修改hosts)让这个域名指向21.104.38.103
  2. 通过这种方式Nginx的配置和生产环境配置的相同即可。

如果非要直接使用IP地址访问(不推荐),你需要修改Nginx的配置,但与location无关,你需要修改server_name
下面的示例只显示了重要部分,你可能需要根据你的实际请求方式进行修改。

server {
    ...

    # 匹配Host为21.104.38.103或无Host的情况
    server_name  21.104.38.103 "";

    ...
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题