前阵子低价入了一个5年年限的 SSL 证书,域名恰好闲置中,于是自己也折腾了一下,去感受下 https 的魅力。
以下是我的配置:
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /path/to/ssl.crt;
ssl_certificate_key /path/to/ssl.key;
location / {
root /path/to/root;
index index.html;
}
}
server {
listen 80;
server_name example.com www.example.com;
if ($host = 'example.com') {
rewrite (.*) https://example.com$1 permanent;
}
if ($host = 'www.example.com') {
rewrite (.*) https://www.example.com$1 permanent;
}
}
我使用了 if 语句让一级域名和二级域名能够分别跳转到各自的 https 地址。即访问 http://example.com
会跳转到 https://example.com
;访问 http://www.example.com
会跳转到 https://www.example.com
。有没有更好的方法呢?
不过还需要注意以下几点:
- if 后面需要加空格,否则无法通过 nginx 的语法测试;
- 网页中的 src 尽量不要包含
http://
开头的地址,使用本地的相对地址或者加上https://
的本地文件链接,否则会提示网页不安全。 - rewrite 和 301 重定向都是可以的,还不是特别理解两者的区别。(似乎前者能够分散 http 和 https 的权重,后者是永久重定向,在 SEO 方面才需要考虑?)
希望自己能够有时间、精力、恒心去做完整个站点。以上。