如何在Nginx上启用HTTPS

Posted ShuSheng007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Nginx上启用HTTPS相关的知识,希望对你有一定的参考价值。

[版权申明] 非商业目的注明出处可自由转载
出自:shusheng007

前言

前端时间有个小伙伴在我的博客上留言说:我的博客是http的他感觉很害怕,建议我为博客开启https,于是我抽点时间升级了一下,特此记录一下。

查看 nginx 是否安装 http_ssl_module 模块

nginx -V

查看输出的编译参数中是否包含 --with-http_ssl_module,如果不包含你还要去下载nginx安装包,自己手动编译一下,具体请查看相关资料,不过一般都已经包含了。

如果没有将nginx配置到环境变量路径(Path)中,就需要通过如下命令查看nginx的安装路径。

ps aux | grep nginx

输出:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     11630  0.0  0.0 143000  1648 ?        Ss   09:17   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 11633  0.0  0.7 151072 15148 ?        S    09:17   0:03 nginx: worker process
root     13974  0.0  0.0  14428  1036 pts/0    S+   17:34   0:00 grep --color=auto nginx

从上面的输出看呀看出,我们电脑的nginx安装在

/usr/sbin/nginx

配置SSL

申请CA证书

如果你已经有证书了那就最好了,如果没有可以使用阿里云申请1年期的免费证书

  • 登录你的阿里云,找到SSL证书服务,入下图所示
  • 创建免费证书

  • 证书申请

点击证书申请,然后填入你的各种申请信息

  • 点击购买

当申请信息填完了,就点击购买即可,放心,付款金额为0。正常情况下,很快就签发了。

下载证书

我们是要配置nginx,所以下载适合nginx的证书。里面包含两个文件,一个.key,一个.pem

配置nginx

  • 找到nginx配置文件
nginx -t

输出如下

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

可见我的nginx的配置文件在

/etc/nginx/nginx.conf

由于我在这个配置文件中使用了如下语句将多个站点的配置给区分开,所以我的配置都在这个路径下

include /etc/nginx/sites-enabled/*;
  • 配置

我的博客https://shusheng007.top的配置如下

server 
    # 服务器端口使用443,开启ssl
    listen  443 ssl;
    # 你网站的根目录
    root  /xxxx/xxxx/xxx/wordpress;
    # index
    index index.php index.html index.htm;
    # 域名,多个以空格分开
    server_name  shusheng007.top  www.shusheng007.top;

    # 我们刚从阿里云下载的ssl证书地址
    ssl_certificate     /xxxx/nginx/cert/shusheng007.top.pem;  # pem文件的路径
    ssl_certificate_key  /xxx/nginx/cert/shusheng007.top.key; # key文件的路径

    # ssl验证相关配置
    ssl_session_timeout  5m;    #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
    ssl_prefer_server_ciphers on;   #使用服务器端的首选算法
      ...


#http跳转为https
server 
    listen  80;
    server_name  shusheng007.top  www.shusheng007.top;
    rewrite ^ https://$host$request_uri? permanent;

  • 验证

验证配置文件是否正确

nginx -t

重启nginx

service nginx restart

总结

由于浏览器霸主google Chrome强推https,http怕是很快没有立锥之地了…最后欢迎访问书生的博客汲取知识:ShuSheng007的博客

以上是关于如何在Nginx上启用HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

在哪里/如何编辑 nginx.conf 以在 Elastic Beanstalk 上启用带有附加标头的 SSL

Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持

没有为请求的 URL 配置默认文档,并且没有在服务器上启用目录浏览。如何解决???

web服务器启用了options方法怎么禁止 nginx

nginx http转 https

如何在 AWS Elastic Beanstalk 服务器上使用 nginx 启用 WebSocket?