Nginx将所有子域名重定向到主域名

11

我想将所有子域名重定向到我的主域名,但目前尚未生效。以下是我的做法:

server {
    listen         [::]:80;
    server_name *.example.com;
    return 301 $scheme://example.com$request_uri;
}
server {
 listen [::]:443;
        server_name example.com;

        ssl on;
        ssl_certificate /etc/ssl/certs/example.com.crt;
        ssl_certificate_key /etc/ssl/private/example.com.key;

        #enables all versions of TLS, but not SSLv2 or 3 which are weak and now deprecated.
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        #Disables all weak ciphers
        ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECD$

        ssl_prefer_server_ciphers on;

        root /var/www/html;
        index index.html;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }
}

然而,当我输入例如www.example.com时,它会重定向到https://www.example.com,如何将所有子域名重定向到https://example.com

2个回答

12

如果您在同一台服务器上有多个站点,并且其中一个主要站点为www.example.com,则:

# main domain:

server {
    listen 80;
    server_name www.example.com;
    ...
}

对于所有子域名,不良或拼写错误的网址都可以重定向到www:

server {
    listen 80;
    server_name *.example.com;
    return 301 http://www.example.com;
}

Nginx首先会检查www.example.com,如果没有匹配的,则所有其他子域都将重定向到 www 子域。

Nginx会优先检查 www.example.com,如果没有匹配的子域名,则会将所有其他子域名重定向到 www.example.com。

3
fastcgi_script_name 是 FastCGI 协议中的一个环境变量,它表示正在处理的脚本文件的路径。 - 9769953

5
您可以简单地创建一个默认服务器,将所有内容重定向到 https://example.com,如下所示:
server {
  listen      [::]:80 default_server;
  server_name localhost;

  return 301 https://example.com$request_uri;
}

所有未找到匹配服务器的请求将由默认服务器提供服务,该服务器会将它们重定向到正确的域名。


1
但是同一台服务器可以拥有多个不同的域名和网页,而且提问者要求将所有来自 *.example.com 的请求重定向到 example.com - João Pimentel Ferreira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接