今天发现网站一直没有自动跳转 HTTPS,首次进入的时候如果只访问了 HTTP,那么还是会停留在 HTTP,所以研究了一下 LNMP 一键包环境下配置 NGINX 实现自动跳转 HTTPS 的方法。其实很简单,我相信我们配置完 SSL 证书之后,都希望通过 301 实现自动跳转。本文分享一下 NGINX 官方推荐的 301 跳转实现方法。
LAMP 下实现类似效果可以参考老唐之前的文章:《LAMP 环境下安装配置 SSL 证书并自动跳转到 HTTPS》。
一、NGINX 官方推荐的跳转方法
目前官方推荐的写法如下(参考:《LNMP环境下正确配置HTTP强制跳转HTTPS的方法》,以及官方文档:《Taxing Rewrites》):
# 不好的方法: rewrite ^/(.*)$ http://example.com/$1 permanent; # 好的方法: rewrite ^ http://example.com$request_uri? permanent; # 更好的方法: return 301 http://example.com$request_uri;
因此,对于 HTTP 强制自动 301 跳转 HTTPS 的写法就是:
return 301 https://$server_name$request_uri;
二、LNMP 配置自动跳转 HTTPS 方法
知道了怎么写跳转,之后就是写在哪里的问题了。
LNMP 对于每个 vhost 的配置文件在下面的目录:
/usr/local/nginx/conf/vhost/域名.conf
我们打开对应自己域名的文件,然后会看到一个类似下面这样的文件:
# https部分 server { listen 443 ssl; server_name yourname.com; ssl_certificate /dir/xx.crt; ssl_certificate_key /dir/xx.key; ssl_dhparam /dir/dhparam.pem; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+EXP; location / { root /your/wwwroot/; index index.html index.htm index.jsp index.do; } } # http部分 server { listen 80; server_name yourname.com; return 301 https://$server_name$request_uri; # 将需要添加的语句添加在此 location / { root /your/wwwroot/; index index.html index.htm index.jsp index.do; } # http部分的location字段可保留可删除 }
上面文件只是示例。主要是文件分为两部分,HTTPS 部分和 HTTP 部分,我们需要把上面的那句 return 301 添加到 HTTP 部分,如上所示。
最后,重启一下 NGINX 生效:
lnmp nginx restart
这个是目前 NGINX 官方最推荐的做法,在 LNMP 一键安装包下配置也很简单,本文就分享至此。
三、建站 VPS 推荐
目前比较推荐腾讯云香港:《腾讯云香港 CN2 VPS 秒杀:428 元/3年,1核 1G 1M,三网直连,超低延迟》。
1、便宜 VPS 推荐:
- 搬瓦工:《搬瓦工 VPS(BandwagonHost)所有便宜方案整理和推荐》
- Vultr:《Vultr 便宜 VPS 方案整理以及速度测试,按小时计费,支付宝付款》
- 腾讯云:《腾讯云:2019年 10 月最新优惠,云服务器 99 元/年起,新老用户均可领取 1870 元代金券》
- 阿里云:《2019 年 9 月阿里云最新活动和优惠信息整理》
- 阿里云:《阿里云轻量应用服务器:24 元/月,香港 CN2,1G 内存,1TB 月流量》
- GigsGigsCloud:《GigsGigsCloud 香港 PCCW / 香港 HKBN / 洛杉矶 CN2 GIA 等便宜 VPS 方案整理》
- DMIT:《DMIT 香港补货:$14.9/月,1G 内存,1.2TB 月流量,200Mbps 大带宽,年付额外九折且流量 1.3 倍》
- DMIT:《DMIT CN2 GIA 优惠:终身九折 + 1.3 倍流量,或终身 1.5 倍流量》
- UCloud:《UCloud:北京、香港 CN2 云服务器 VPS 低至 100 元/年》
- HostDare:《HostDare CN2 GIA 方案重新补货上线,永久 85 折,$39/年起》
- VirMach:《VirMach:$4.9/年,1核 256MB 5GB,超低价便宜 VPS 重现江湖》
- Linode:《Linode 优惠码:2019 年 9 月最新 Linode 新用户 20 美元优惠码》
- SugarHosts:《糖果主机 SugarHosts:2019 年 10 月最新优惠码,VPS 全场七折》
- CubeCloud:《CubeCloud 魔方云:欢度国庆,洛杉矶 CN2 产品限时特惠,终身九折 58.5 元/月起》
- HostWinds:《HostWinds:1核 1G 30G,$5.17/月,西雅图,最便宜的全管理型 VPS 推荐》
- RFCHOST:《RFCHOST:$8.99/月,洛杉矶 CN2 GIA,512MB,10GB HDD,500GB 月流量 @500Mbps》
更多国内 VPS 商家推荐,参考《2019 年最好用的便宜国内云服务器 VPS 主机商家排行推荐》。
2、优质的域名注册商:
- Dynadot:《Dynadot:靠谱便宜国外域名注册商,域名注册低至 15 元/年》
- NameCheap:《NameCheap:.COM,.ME 等多种域名优惠低至 1.6 折,$2.98/年》
更多域名注册商推荐,可以参考 搬砖部落 出品的《2019 年最好的便宜域名注册商推荐》。