我需要处理一个不太简单的重定向。根据某些值,我需要在旧页面和新页面之间重定向用户。我的新页面发布在另一个端口并分配在另一个子网址,例如:
old (port 80):
/goods/browse/
other (port 8080)
/goods/all
我需要使用 nginx 功能来处理这个问题...所以我尝试进行这样的配置:
set $USE_ALTERNATIVE_PAGES 1;
location ~ ^/goods/(.*)$ {
# 8080
if ($USE_ALTERNATIVE_PAGES ~* 1) {
return 308 $scheme://$server_name:8080/goods/$;
}
# 80
if ($USE_ALTERNATIVE_PAGES !~* 1){
return 308 $scheme://$server_name:80/goods/$;
}
}
我认为我的配置应该类似于下面的示例。有人能帮我解决这种情况吗?如何处理 /goods/browse/ 或 /goods/all 重定向?或者我该怎么做?
答案1
你的情况很标准:你想/goods/browse/
代理到旧服务器,而又/goods/all/
想代理到新服务器。所以你需要:
location /goods/browse/ {
proxy_pass http://<server_name_or_IP>;
}
location /goods/all/ {
proxy_pass http://<server_name_or_IP>:8080;
}
我假设新旧页面在另一台机器上,因为nginx主机可能被nginx。
备注:您可能希望(反向)代理页面而不是将浏览器重定向到另一个 URL:客户端不会注意到您在非标准端口上使用两个服务器。nginx将检索浏览器的页面但不泄露其位置。