小编Don*_*rdy的帖子

在 Nginx 中,将特定子域映射到端口,重定向所有其他域

我正在努力完成三件事:

  1. 按子域将流量映射到不同端口上的多个应用程序之一。
  2. 如果无法识别子域,请重定向到 www。
  3. 要求所有子域都使用 HTTPS。

到目前为止,我的 nginx 配置是:

map $subdomain $subdomain_port {
  default    8000;
  www        8000;
  subdomain1 8001;
  subdomain2 8002;
  subdomain3 8003;
}

server {
    listen 80;
    listen [::]:80;
    server_name _;
    return 301 https://$host$request_uri;
}

server {
    listen              443 ssl;
    server_name         ~^(?P<subdomain>.+?)\.mydomain\.com$;

    ssl_certificate     <cert>;
    ssl_certificate_key <key>;

    location / {
      # ... various proxy headers, then ...
      proxy_pass http://127.0.0.1:$subdomain_port;
      proxy_redirect off;
    }
}
Run Code Online (Sandbox Code Playgroud)

几乎有效(它完成了 #1 和 #3),但它不是重定向foo.mydomain.comwww.mydomain.com,而是只提供www内容而不重定向。我不确定如何重定向未映射的子域而不将整个事物分成单独的server块,我真的不想这样做。

有没有办法将地图中未明确提及的所有子域重定向到www

nginx redirect subdomain wildcard-subdomain

7
推荐指数
1
解决办法
7415
查看次数

标签 统计

nginx ×1

redirect ×1

subdomain ×1

wildcard-subdomain ×1