一个乐于分享的博客
关注互联网折腾服务器分享码农的日常

利用nginx和.htaccess重定向http为https

利用nginx和.htaccess重定向http为https

2018-03-15 10:33:48更新:修复二级域名访问http://www.yantuz.cn时出现400 Bad Request:The plain HTTP request was sent to HTTPS port的问题。详情查看

越来越多的网站开启了HTTPS加密访问,而HTTPS也是以后的大势所趋。如果您还未开启Https,详见“申请免费SSL证书 升级HTTPS”。实现HTTPS之后要做的最后一步就是自动将http请求跳转到https页面。

nginx实现

对于用独立服务器的用户,可以通过修改nginx.conf文件来实现上述功能,在server中添加如下代码即可

 if ($scheme = http) {
     return 301 https://$host$request_uri;
 }

.htaccess实现

如果用的是虚拟主机,或者不完全控制权的服务器,也可以通过.htaccess文件来实现。

.htaccess提供了针对目录改变配置的方法。

首先我们先找到.htaccess文件,该文件在网站位于网站根目录之下,通常是隐藏文件。如果找不到,检查是否开启了隐藏文件,或者直接用vim进行编辑,增加重定向命令。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

最后测试功能,比如在浏览器输入“http://yantuz.cn/”,检测是否能重定向至“https://bak.yantuz.cn:8000/

修复The plain HTTP request was sent to HTTPS port

错误如图,大意是HTTP请求被发送到HTTPS端口了

利用nginx和.htaccess重定向http为https

解决方法

#修改nginx配置文件
vim /usr/local/nginx/conf/vhost/yantuz.cn.conf

server {
  listen 80;
  listen 443 default ssl;  #增加default属性

  # ssl on   #注释掉ssl on
}

配置www.yantuz.cn的DNS解析为CNAME目标指向yantuz.cn

转载务必注明出处:岩兔站 » 利用nginx和.htaccess重定向http为https
赞 (0) or 打赏

讨论区 抢沙发

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