【问题标题】:NGINX rewrite location to another portNGINX 将位置重写到另一个端口
【发布时间】:2018-11-16 23:38:20
【问题描述】:

已经安装了 NGINX,所以我可以转移

http://example.com/Dev/ to http://example.com:8080/apex/f?p=4550:1

我以为我找到了解决方案并试了一下:

修改了 ngnix.config

   location /dev/ {
       rewrite ^/(/dev/)(.*)$ http://localhost:8080/apex/$1 break;
       rewrite_log on;
    }

.

sudo systemctrl reload nginx

但是当我在浏览器上尝试http://example.com/Dev/

我收到 500 错误。

网站正在监听 8080,NGiNX 正在监听 80

也试过了

location /dev {
    rewrite ^/dev(.*) /apex/$1 last;
    proxy_pass http://localhost:8080;
}

【问题讨论】:

  • 异常日志中有什么内容?

标签: nginx url-rewriting nginx-location proxypass


【解决方案1】:

信用return 301

在阅读了上面的答案后,我尝试使用 return 而不是 rewrite 并且它起作用了。

无论如何,这都是有效的。

location ~ /dev/?$ {
        return 302 http://example.com:8080/apex/$1;
     }

在玩了之后,我也让它与重写一起工作,看起来我只需要在位置行中添加一个'~'

location ~ /dev {
           rewrite ^/dev(.*) http://example.com:8080/apex$1 last;
        }

【讨论】:

  • 谁能解释一下 location 命令后面的“~”,因为它似乎有所作为?
  • AndrewT:“如果存在波浪号修饰符,则此位置将被解释为区分大小写的正则表达式匹配。”见this link
猜你喜欢
  • 2011-03-14
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 2013-04-09
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
  • 2017-01-22
相关资源
最近更新 更多