当前位置: 首页 > 网站建设 > HTTPS相关 > Nginx强制https,HTTP 301重定向到HTTPS

Nginx强制https,HTTP 301重定向到HTTPS

发布于:2016-5-24 最后更新:2018-11-4 HTTPS相关 19条评论 28,808 views
本站提供Linux服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme

全站启用https让您的网站更安全,但是在过程中总会遇到一些麻烦,分享这篇文章希望对需要的童鞋有帮助,我们不需要去过多的修改程序设置,直接在WEB服务器(Nginx)中配置一下,将80端口(HTTP)全部301重定向到HTTPS,目前小z博客就是使用的这个方法。

nginx_580

一、前提条件

此方法仅适用于Nginx WEB服务,推荐安装军哥LNMPOneinStack,自己编译安装的Nginx也是可以的。

二、修改主机配置文件

军哥LNMP或OneinStack的配置文件在/usr/local/nginx/conf/vhost/youdomain.com.conf,将下面的配置添加到文件中。

server
{
        listen 80;
        server_name xiaoz.me www.xiaoz.me;
        rewrite ^(.*) https://blog.xiaoz.org$1 permanent;
}

上面的配置含义是当我们去使用HTTP请求xiaoz.me或www.xiaoz.me的时候全部301重定向到https://blog.xiaoz.org,下面是完整的配置文件供参考:

server {
listen 443;
ssl on;
ssl_certificate /data/ssl/xiaoz.me.crt;
ssl_certificate_key /data/ssl/xiaoz.me.key;
server_name xiaoz.me www.xiaoz.me;
index index.html index.htm index.php;
...
...
}

server
{
        listen 80;
        server_name xiaoz.me www.xiaoz.me;
        rewrite ^(.*) https://blog.xiaoz.org$1 permanent;
}

配置修改后别忘记重载一下Nginx:service nginx reload

三、CURL测试

最后我们可以测试下访问HTTP是否会301重定向到HTTPS,可以使用CURL测试一下:curl -I www.xiaoz.me,Nginx配置SSL的教程可以参考:Nginx怎样部署SSL证书

curl_test

推荐阅读:CentOS申请Let’s Encrypt免费SSL证书
沃通免费SSL证书申请

19 条评论 “Nginx强制https,HTTP 301重定向到HTTPS”

  1. 不认识说道:

    博主,你好。曾尝试过rewrite方式,但将您重定向的次数过多,一直未能解决,所以就用页面来做跳转了。

  2. 风哥说道:

    请问作者:
    如果想过滤某一目录怎么写,比如过滤目录名为“KKK”,怎么写规则呢?

    1. 小z说道:

      过滤目录您是指的某个目录不要强制HTTPS吗?

      1. 风哥说道:

        是的,比如有一个目录KKK,这个目录不强制HTTPS

        1. 小z说道:

          抱歉,暂时还没有实现过,不过您可以网上搜索一下。

  3. 野草说道:

    请问怎样将https://xiaoz.me/ 的全部网址重定向到 https://www.xiaoz.me/ ?我也是按你教程那样设置,最多只能把http的域名都重定向到https://www.xiaoz.me/ ,但访问https://xiaoz.me/时,没有任何跳转

    1. 小z说道:

      我只做了下面的就可以了,注意看server_name需要把www和不带www都填写上。

      
      server
      {
              listen 80;
              server_name xiaoz.me www.xiaoz.me;
              rewrite ^(.*) https://www.xiaoz.me$1 permanent;
      }
      
      1. 台城资讯说道:

        htaccess怎么写啊

        1. 小z说道:

          您好,如果是.htaccess文件可以加入下面的规则:

          
          RewriteCond %{SERVER_PORT} !^443$
          RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
          
          1. 台城资讯说道:

            谢谢,但是这样的话,a.com是跳转到https://a.com而不是https://www.a.com

          2. 小z说道:

            那您再加入一条这样的试试呢:

            
            RewriteCond %{HTTP_HOST} ^a.com [NC]
            RewriteRule ^(.*)$ https://www.a.com/$1 [L,R=301]
            
          3. 台城资讯说道:

            谢谢,这样就可以了。
            下面的没有回复按钮,就在这回复了。

      2. 七叶一枝花说道:

        nginx 1.1.20版本上https://www.domain.com to https://domain.com行不通。

  4. exexue说道:

    为什么我很讨厌https,不知道为什么。虽然我喜欢加密。

  5. BanYuner说道:

    一直想要上https 但是使用的七牛貌似对https支持的不是很好

    1. 小z说道:

      现在七牛支持https哒,我的博客静态资源全部走的七牛。没什么问题

  6. 拂晓论坛说道:

    多谢,我会试着去做。

  7. 百度移动优化中说如果采用了SSL建议做301定向。

    1. 小z说道:

      期待部落早点上https

发表评论

邮箱地址不会被公开。 必填项已用*标注