![nginx:同时为 domain.com 和 www.domain.com 提供服务](https://linux22.com/image/607290/nginx%EF%BC%9A%E5%90%8C%E6%97%B6%E4%B8%BA%20domain.com%20%E5%92%8C%20www.domain.com%20%E6%8F%90%E4%BE%9B%E6%9C%8D%E5%8A%A1.png)
我目前有一个 nginx 服务器,可以通过 HTTP 和 HTTPS 输入 domain.com 来访问。但是,当我尝试通过输入 www.domain.com 来连接时,连接似乎会挂起,并且 Firefox 会报告“页面加载时与服务器的连接已重置...”
这是我当前的 server_name 配置:
server_name localhost www.example.com example.com;
nginx 文档似乎表明这应该可行,我做错了什么?
答案1
这
server {
listen 80;
server_name example.com;
return 301 $scheme://www.example.com$request_uri;
}
会将 example.com 重定向至 www.example.com,并且
server {
listen 80;
server_name www.example.com;
location / {
root /var/www/example.com;
index index.html index.htm;
}
}
将提供 www.example.com 服务。
你可以对 https 做同样的事情,但不太可能有人会费力地输入 https:// 和非规范的地址,所以
server {
listen 443;
server_name www.example.com;
ssl on;
ssl_certificate /etc/ssl/private/www.example.com.crt;
ssl_certificate_key /etc/ssl/private/www.example.com.key;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers HIGH:!ADH:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /var/www/example.com;
index index.html index.htm;
}
}
就足够了。