• 为了随主流,即大多数人的习惯,访问时网站时,域名随时保持带 www 的二级域名 www.lovesofttech.com
  • 另外,网站的统计也是基于二级域名 www.lovesofttech.com 的,同时为了搜索引擎优化,访问 lovesofttech.com 时需要跳转到 www.lovesofttech.com
  • 网站开通了 ssl 证书,需要将 http 强制跳转至 https

完整配置内容

script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 针对 http 协议,将 @ 记录,即不带 www 的主域名 http://lovesofttech.com 跳转至带 www 的二级域名 http://www.lovesofttech.com,域名后面的路径以及参数保持不变
# 如果配置了 htts 协议的跳转,这个server配置可以不要。
server {
listen 80;
server_name lovesofttech.com;
rewrite ^(.*)$ https://www.$server_name$1 permanent;
}

# 如果配置了上面的 http 协议的主域名 http://lovesofttech.com 跳转至二级域名 https://www.lovesofttech.com,则下面这个server的配置可以把主域名 lovesofttech.com 去掉
server {
listen 80;
server_name www.lovesofttech.com lovesofttech.com;
rewrite ^(.*)$ https://$host$1 permanent;
}

# 以下 server 配置 ssl 协议,注意端口不再是80而是443
server {
listen 443;
server_name www.lovesofttech.com lovesofttech.com;
charset utf-8;
access_log logs/lovesofttech.access.log;
error_log logs/lovesofttech.error.log;
ssl on;
ssl_certificate /usr/local/nginx/cert/2944536_www.lovesofttech.com.pem;
ssl_certificate_key /usr/local/nginx/cert/2944536_www.lovesofttech.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

# 针对 https 协议,将 @ 记录,即不带 www 的主域名 https://lovesofttech.com 跳转至带 www 的二级域名 https://www.lovesofttech.com,域名后面的路径以及参数保持不变
if ($host != 'www.lovesofttech.com') {
rewrite ^/(.*)$ https://www.lovesofttech.com/$1 permanent;
}

location / {
root /home/utomcat/gitCode/lovesoft/uncleAndyChen/public;
index index.html;
}
}

后记

带路径时不会重定向

之前的主域名 http://lovesofttech.com 跳转至带 www 的二级域名 https://www.lovesofttech.com,是在阿里云的域名解析里做的,是一个域名重定向的配置。

域名重定向配置
域名重定向配置

可以设置301重定向,也可以设置成302重定向
可以设置301重定向,也可以设置成302重定向

这样配置带来的问题是,只有主页 http://lovesofttech.com 才会重定向到 https://www.lovesofttech.com,带路径的文章如 https://lovesofttech.com/about/ 就不会重定向,而且显示无法访问。

在百度里搜索:site:lovesofttech.com,得到的结果,不带 www 的主域名且带路径的文章链接,如 https://lovesofttech.com/about/ ,均无法访问。

解决

修改主域名解析配置为 A 记录,记录值直接指向服务器IP。

域名重定向配置
域名重定向配置

这样配置之后,https://lovesofttech.com/about/ 这样的链接已经可以正常访问了,但是不利于网站统计和搜索引擎优化(时髦词叫 SEO),所以,还需要通过 Nginx 配置来重定向。

没有开通 ssl 证书的重定向配置

script
1
2
3
4
5
server {
listen 80;
server_name lovesofttech.com;
rewrite ^(.*)$ https://www.$server_name$1 permanent;
}

开通了 ssl 证书的重定向配置

修改监听 443 端口的 server 配置,在 location 配置前面加上:

script
1
2
3
if ($host != 'www.lovesofttech.com') {
rewrite ^/(.*)$ https://www.lovesofttech.com/$1 permanent;
}

具体可参考上面的完整配置内容。