首页 > 资源分享 > 正文
Nginx下配置网站ssl实现https访问

Nginx下配置网站ssl实现https访问

在今年的早些时候百度搜索已经全面实现https模式,并宣称已经可以抓取https网页了,相比谷歌早年就已经支持https的抓取,百度虽然晚了一点,但是毕竟现在还是有了,站长之家上也有人探讨关于https模式对百度谷歌seo的影响(传送门),虽然还没有人给出实际测试的数据,但是百度全站https模式的话或多或少也能说明百度当下对https站点的态度吧!

然后切入主题讲一讲Nginx下配置网站ssl实现https模式访问的方法

第一步:服务器环境,lnmp即Linux+Nginx+PHP+MySQL,本文中以我的博客为例,使用的是阿里云最低档的vps+免费的Linux服务器管理系统WDCP快速搭建的lnmp环境(同类产品还有amh有免费版以及收费版),具体安装以及使用方法都可以在其官方论坛找到详细的操作文档。

第二步:创建你的网站,使用lnmp环境创建你的网站,已有网站的,确保你的程序在lnmp下能够正常的运行,以wordpress为例,lamp跟lnmp下的伪静态规则是不同的,有过更换的,要记得切换。

第三步:申请免费的ssl证书,关于ssl证书的申请,之前已经有人给出了详细的教程(传送门)。

第四步:配置网站ssl,找到你需要配置ssl的网站的Nginx配置文件,以WDCP为例配置文件在/www/wdlinux/nginx/conf/vhost/目录,将以下代码添加只网站的配置文件server中,同时为了方便管理,需要将你申请的nginx下的ssl证书上传到/www/wdlinux/nginx/conf/目录,不同的管理系统或者是手动配置的lnmp环境这个目录都是不一样的,请根据你的实际情况进行调整。

ssl on;
ssl_certificate_key /www/wdlinux/nginx/conf/pastdust.key;
ssl_certificate /www/wdlinux/nginx/conf/pastdust.crt;

因为ssl访问的不是传统网站的80端口,而是443端口则需要在配置文件中继续为网站添加443端口,为了方便不知道把以上放在配置文件的什么位置的人,以下将我网站完整的配置文件贴出,可以根据你的实际情况进行修改。

server {
        listen 80;
        listen 443;
        server_name pastdust.com www.pastdust.com;
        root /www/web/pastdust_com/public_html;
        index  index.html index.php index.htm;
        error_page  400 /errpage/400.html;
        error_page  403 /errpage/403.html;
        error_page  404 /errpage/404.html;
 	ssl on;
 	ssl_certificate_key  /www/wdlinux/nginx/conf/pastdust.key;
 	ssl_certificate  /www/wdlinux/nginx/conf/pastdust.crt;
        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                include fcgi.conf;
        }
        include rewrite/pastdust.conf;
}

确认以上都修改无误之后,重启nginx基本上这个时候你的网站就能通过ssl访问了,但是还有一些细节问题需要调整,譬如以上网站配置文件是http与https模式并存的,还需要做一个跳转,件http模式的访问全部跳转到https模式。

第五步:网站强制访闫C并让全站https模式访问,具体的关于https模式访问在百度SEO这一块的表现,需要等待一些时间的数据,因为截至到这篇文章发布位置,我也只是刚刚将博客https化,有需要参考最终实现效果的可以参考我的博客,所有的代码修改都是原版分享没有保留,同时欢迎大家留言探讨。

2017年3月31日更新:
对于懒得自己动手折腾的,给大家推荐一款免费的面板,之前我有介绍,传送门:https://www.pastdust.com/bt-linux/,目前已经更新到3.5版本的,最新版是基于Python编写的,面板的系统资源占有率极低,同时能够一键配置ssl,可以是自己的证书也可以配置Let’s Encrypt免费证书。

本文系PastDust原创,如有转载请标注原文地址!

文章评论

共有 26 条评论

  1. ivmm

    都用 SSL 还不用 SPDY或者HTTP/2 简直就是浪费

    1. PastDust

      新的,未必就是应用最为广泛的,所有新的东西都是需要时间来慢慢让更多人接受的

      1. ivmm

        呃。 SPDY 根本没有不适反映,而且单纯SSL会比HTTP慢很多,只有用了SPDY 才会变快

        1. PastDust

          亲 我没有否认http2的性能 这篇文章有个大前提 那就是仅适合还不会配置SSL的新手来实现一下https访问 还没涉及到性能优化

          1. ivmm

            我的意思是,你的教程可以+入SDPY的教程,毕竟新手也是要看教程才会变老手的呀~~

  2. 徐小梦

    [耶]要看清纯萌妹纸私藏美图,就到→ http://www.nanrenji.xyz

  3. REBORN

    我也是这样子配置,但是还是不行啊

    1. PastDust

      方法是没有问题的,仔细检查一下究竟是那个细节没有注意到

  4. Ccccc

    我的nginx 配置好了 访问的时候也能显示锁 但是tomcat首页进不去了,一直报404。nginx配置ssl之前,访问linux ip 能直接看到tomcat首页的。

    1. Past Dust

      nginx实现https也只是修改了nginx的web配置文件而已,可以检查一下系统默认的web配置文件

  5. 浅辙

    我博客做了伪静态,但是加了这个https的301之后所有文章点击都报404,是要修改伪静态么?

  6. 浅辙

    我博客做了伪静态,但是加了这个https的301之后所有文章点击都报404,是要修改伪静态么,捣鼓了好久都没做好

    1. Past Dust

      Nginx的ssl配置是跟http网站一起的,也就是相同的网站配置文件下,如果是http模式的时候都可以正常访问,那么就还是你配置文件弄错了。你确定你http访问的时候都是正常的么?
      另外这跟伪静态的配置如否没有关系。

      1. 浅辙

        嗯,我现的wordpress主页可以兼容http和https两种,但是进去https后点击所有文章都报404,固定连接如果切到 /?p=xxx 就可以正常访问https

        1. Past Dust

          既然https能够正常访问了,你试试是不是伪静态根本就没有生效,我这里也有Nginx下的伪静态规则,你搜一下!

          1. Past Dust

            如果害怕配置错误,就不要直接在网站配置文件里面写伪静态规则,把伪静态规则放在别的目录在网站配置文件里面加载就好了

        2. Past Dust

          include rewrite/xxx.conf; 在网站配置文件里面加载伪静态规则文件

          1. 浅辙

            嗯,找到了,我https的rewrite conf地址错了,谢谢哈

  7. 尘剑

    搂着你好,我的 https://chmake.cn 能访问,但是http:// 不能访问了 是什么原因呢

    1. Past Dust

      不确定你的具体环境以及修改后的配置是怎么样的,方法一:你看看教程里面的把http请求301到https的配置方法,看行不行,这样的话就只保留https版本,方法二:配置文件里面的 ssl on这一行去掉,在listen 443;里面加上ssl,改成listen 443 ssl;,这样的话就可以让两种请求同时存在,不过部分程序是不支持同时使用http以及https访问的,譬如wordpress,看你自己需求,有问题你再留言看看。

    2. Past Dust

      然后给你推荐一款免费并且资源占用底的面板,最新版是基于Python的,可以看一下我之前对老版本的介绍,地址 https://www.pastdust.com/bt-linux/,可以一键配置ssl,很方便。

  8. 砒霜有毒

    嗯 nginx我已经实现了 是端口被安全软件屏蔽了 有没好点的免费ssl证书???

Top