Nginx,重定向后将位置路径保存在url中

时间:2019-04-23 05:47:47

标签: nginx

我对nginx具有以下配置

 location /discord/ {
   rewrite ^/discord/(.*) /$1 break;
   proxy_pass http://127.0.0.1:8086/;
   proxy_pass_header Cookie;
   port_in_redirect off;
   proxy_set_header Host $host;
  }

  location / {
   proxy_pass http://127.0.0.1:8089/;
   proxy_pass_header Cookie;
   proxy_set_header Host $host;
  }

如您所见,我有两个服务器在同一域上运行 问题是:

我在 http://127.0.0.1:8086/ 中有一个链接。假设我要访问默认页面,我打开此链接 http://domain/discord ,然后按此页面上带有路径“ / test”的链接,然后转到下一页 http://domain/test ,但我想访问此页面 http://domain/discord/test

如何配置Nginx在 http://127.0.0.1:8086/ 页内的URL中添加 discord 前缀

2 个答案:

答案 0 :(得分:1)

您在这里尝试做的是,使重写规则根据先前路径

将访问者重定向到其他位置

这将需要Web服务器了解referer request header,该{{3}}只能从应用程序层(例如PHP)实现,而在我的理解中不能实现服务器配置


一种方法是在链接上使用 relative 路径,例如:

  

http://domain/discord/

下的根文档(由Web服务器重写)      

绝对路径:href="/test" => http://domain/test

     

相对路径:href="./test" => http://domain/discord/test

您可以更改位置以便将来在Nginx中重写,并且不会影响相对路径

  

http://domain/telegram/下的根文档(由Web服务器重写)

     

绝对路径:href="/test" => http://domain/test

     

相对路径:href="./test" => http://domain/telegram/test

答案 1 :(得分:0)

在链接中添加“ discord / test”作为href。