我该如何处理端口和子网址之间的重定向

我该如何处理端口和子网址之间的重定向

我需要处理一个不太简单的重定向。根据某些值,我需要在旧页面和新页面之间重定向用户。我的新页面发布在另一个端口并分配在另一个子网址,例如:

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将检索浏览器的页面但不泄露其位置。

相关内容