• 如何在Nginx上启用HTTPS


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

    前言

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

    查看 nginx 是否安装 http_ssl_module 模块

    nginx -V
    
    • 1

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

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

    ps aux | grep nginx
    
    • 1

    输出:

    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
    
    • 1
    • 2
    • 3
    • 4

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

    /usr/sbin/nginx
    
    • 1

    配置SSL

    申请CA证书

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

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

    在这里插入图片描述

    • 证书申请

    点击证书申请,然后填入你的各种申请信息
    在这里插入图片描述

    • 点击购买

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

    下载证书

    我们是要配置nginx,所以下载适合nginx的证书。里面包含两个文件,一个.key,一个.pem
    在这里插入图片描述

    配置nginx

    • 找到nginx配置文件
    nginx -t
    
    • 1

    输出如下

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

    可见我的nginx的配置文件在

    /etc/nginx/nginx.conf
    
    • 1

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

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

    我的博客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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 验证

    验证配置文件是否正确

    nginx -t
    
    • 1

    重启nginx

    service nginx restart
    
    • 1

    总结

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

  • 相关阅读:
    ZooKeeper的简单使用
    怎么使用Stable diffusion中的models
    直方图均衡化(三,c#实现)
    2N2222简介及用Arduino模拟
    HTTP 响应状态码介绍
    【数据结构与算法】通过双向链表和HashMap实现LRU缓存 详解
    Spring -Spring之依赖注入源码解析
    《C陷阱和缺陷》-笔记 (3)
    浅析AcrelEMS-CIA机场智慧能源管平台解决方案-安科瑞 蒋静
    MySQL---DDL-数据库操作,对于数据库表的CRUD和表字段的数据类型
  • 原文地址:https://blog.csdn.net/ShuSheng0007/article/details/127575900