【问题标题】:nginx: How do I make a rewrite (redirect) relative? (i.e. don't mess with the port number!)nginx:如何进行重写(重定向)相对? (即不要弄乱端口号!)
【发布时间】:2016-02-16 22:41:43
【问题描述】:

我目前使用的是 nginx 1.9.11。我有一种情况,我的应用程序通过负载平衡器从动态端口提供服务,但应用程序本身的端口已设置。看起来是这样的

Port [4000-4999] on load balancer -> instances of nginx all on port 80

我需要在不丢失端口信息的情况下将/myapp 重定向到/myapp/。但我不知道应用程序级别的端口,因为应用程序是动态创建和销毁的!

这是我的重写规则的语法:

rewrite ^/myapp /myapp/

我得到的是:

http://example.com:4000/myapp  -> http://example.com/myapp   # no port 4000!

我无法对端口进行硬编码...因为有上千种可能性,而且它们一直在变化!我需要留在同一个端口,但我不知道我们进入哪个端口。我如何让 nginx 不理会端口?


我已经尝试过的...

httpserverlocation 部分:

port_in_redirect off;

server 部分:

proxy_set_header Host $host:$server_port;

同样在server 部分:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;

【问题讨论】:

    标签: nginx rewrite


    【解决方案1】:

    经典。经过两天的努力,我写了一篇不错的 Stack Overflow 帖子,然后我立刻想到了什么,我尝试了一下,它成功了。

    这是我解决问题的方法:我将重写规则更改为如下所示:

    rewrite ^/myapp $http_host/myapp/
    

    它成功了!

    【讨论】:

      猜你喜欢
      • 2015-12-10
      • 2017-09-09
      • 1970-01-01
      • 2022-07-22
      • 2021-07-16
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      相关资源
      最近更新 更多