我尝试将所有子域重定向到我的主域,但到目前为止它还没有工作。以下是我的表现:
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
?
答案 0 :(得分:3)
您可以简单地创建一个默认服务器,将所有内容重定向到https://example.com,如下所示:
server {
listen [::]:80 default_server;
server_name localhost;
return 301 https://example.com$request_uri;
}
所有未找到匹配服务器的传入请求都将由默认服务器提供,默认服务器会将它们重定向到正确的域。
答案 1 :(得分:2)
你可以简单地做到:
server_name example.com *.example.com;
它适合我
如果在同一台服务器上有多个站点,rauberdaniel的解决方案不是很方便。
答案 2 :(得分:1)
如果您在同一台服务器上有多个网站,并且您的一个主要网站是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$fastcgi_script_name;
}
Nginx将首先检查www.example.com,如果不匹配,所有其他子域名将被重定向到www。