gpt4 book ai didi

nginx - 301重定向时nginx保留端口号

转载 作者:行者123 更新时间:2023-12-04 05:06:08 25 4
gpt4 key购买 nike

我正在尝试将网络应用程序的第二个品牌折叠为第一个品牌,并使用301重定向来重定向所有挥之不去的流量。服务器在端口8001上的Vagrant框转发中运行。我希望具有:

代替https://local-dev-url:8001/foo/(anything) 301至https://local-dev-url:8001/(anything)

代替https://local-dev-url:8001/adminfoo/(anything) 301到https://local-dev-url:8001/admin/(anything)

这是我所拥有的:

    location ~ /foo/?(.*)$ {
return 301 $1/;
}

location ~ /adminfoo/?(.*)$ {
return 301 admin/$1/;
}

location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header Authorization $http_authorization;
proxy_set_header X-Scheme $scheme;
proxy_pass http://127.0.0.1:5000;
proxy_redirect http:// $scheme://;
}

location /admin/ {
alias /hostonly/path/to/admin/stuff/;
}


但是,不是将 https://local-dev-url:8001/foo/重定向到 https://local-dev-url:8001/,而是将301ing重定向到 https://local-dev-url//。 (没有端口号,额外的斜杠。)我已经看到了对重定向的URL进行硬编码的答案,但是由于我与许多其他开发人员一起工作,并且我们都有唯一的本地开发URL,因此唯一一致的部分是: 8001端口号。

有没有一种方法可以配置301以使其按需工作?

最佳答案

如果nginx没有在端口8001上侦听,则它将不知道在重定向中使用哪个端口。您将需要明确指定它:

location ~ /foo(.*)$ {
return 301 $scheme://$http_host$1;
}
location ~ /adminfoo(.*)$ {
return 301 $scheme://$http_host/admin$1;
}


$http_host变量由原始请求中的主机名和端口组成。有关详细信息,请参见 this document

关于nginx - 301重定向时nginx保留端口号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43397365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com