Nginx 将多个子域名映射到单个 URL

Nginx 将多个子域名映射到单个 URL

我是 Nginx 新手,以前从未使用过它。遇到了一个问题,找不到解决方案。这个问题可能被问过很多次,但我找不到答案。

如何针对以下场景配置 Nginx
“my.domain.com/login/” 应代理来自“login.domain.com”的内容
“my.domain.com/admin/” 应代理来自“admin.domain.com”的内容
“my.domain.com/profile/” 应代理来自“profile.domain.com”的内容

login.domain.com 对用户进行身份验证,并将其重定向到 admin.domain.com 或 profile.domain.com

将不胜感激任何帮助或对类似解决方案的参考。

最好的,

答案1

server {
    listen [::]:80;
    listen 80;
    server_name my.domain.com;
    location /login/ {
        proxy_pass http://login.domain.com/;
    }
    location /admin/ {
        proxy_pass http://admin.domain.com/;
    }
    location /profile/ {
        proxy_pass http://profile.domain.com/;
    }
}

听起来你还得添加一堆proxy_redirect指令,例如:

location /login/ {
    proxy_pass http://login.domain.com/;
    proxy_redirect http://login.domain.com/ /login/;
    proxy_redirect http://admin.domain.com/ /admin/;
    proxy_redirect http://profile.domain.com/ /profile/;
}

或者,也许使用正则表达式,如下所示:

location /login/ {
    proxy_pass http://login.domain.com/;
    proxy_redirect http://([a-z]+).domain.com/ /$1/;
}

相关内容