LNMP下HTTP强制跳转HTTPS的几种写法

教程分享 [db:作者] 10个月前 (11-16) 173次浏览 0个评论

现在越来越多的网站都启用https访问了,SSL 证书也不贵,还有一些免费的比如 Let’s Encrypt 或者腾讯也有提供 1 年免费证书等等,加上https有更好的安全性,甚至有人说以后搜索引擎都更青睐https的网站…今天就记录下在 HTTP 强制跳转 HTTPS 的几种方式方法,方便哪天我要加 SSL 的时候使用。

我们需要修改域名配置文件,这里我以军哥 LNMP 环境为例,路径在/usr/local/nginx/conf/vhost/

LNMP 下 HTTP 强制跳转 HTTPS 的几种写法

如上图,选择部分就是添加的跳转内容,通常我们有多种写法方式,下面列举。

No.1
if ($scheme = http ) {
return 301 <a href="http://www.stovps.com/tag/https" title="查看更多关于 https 的文章" target="_blank">https</a>://$host$request_uri; }
 
No.2
server_name zrblog.net ;
rewrite ^(.*) <a href="http://www.stovps.com/tag/https" title="查看更多关于 https 的文章" target="_blank">https</a>://www.zrblog.net$1 permanent;
 
No.3
if ($server_port = 80 ) {
return 301 <a href="http://www.stovps.com/tag/https" title="查看更多关于 https 的文章" target="_blank">https</a>://$host$request_uri; }
 
No.4
server_name zrblog.net ;
return 301 https://$server_name$request_uri;

延伸:

如果网站不是采用的 NGINX 而是 APACHE,那就更加简单了,直接在网站根目录修改.htaccess 文件,加入:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.zrblog.net$ [NC]
RewriteRule ^(.*)$ https://www.zrblog.net/$1 [L,R=301]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.zrblog.net/$1 [L,R=301]

这样的话,除了不加 www 的域名访问,也会自动跳转到 www 域名并 HTTPS 访问。

NGINX 的其他写法方式:

rewrite ^(.*)$? https://$host$1 permanent;  #1
return 301 https://$server_name$request_uri; #2
if ($host ~* "^zrblog.net$") {
rewrite ^/(.*)$ https://www.zrblog.net/ permanent;
}     #3
if ($host = www.zrblog.net) {
rewrite ^/(.*)$ http://www.zrblog.net permanent;
}    #4


速通主机速通主机
转载请注明原文链接:LNMP 下 HTTP 强制跳转 HTTPS 的几种写法
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址