zoukankan      html  css  js  c++  java
  • nginx启用https访问


    什么是https?

    https 全称:Hyper Text Transfer Protocol over Secure Socket Layer,是http的安全版。即http下加入SSL协议层,因此https的安全基础就是SSL,所以加密内容需要SSL。
    配置过程

    首先需要申请一个证书,可以申请一个免费的。

    如何申请

    我是用的腾讯云,云产品-》域名与网站-》SSL证书管理

    然后选免费版的,一般免费版有效期是一年,然后填各种信息,提交审核就好了,审核很快的,一个小时工作时间左右吧

    审核成功后就可以在证书列表里下载证书了,下载出来是一个压缩包,里面有各种版本的证书:Apache、IIS、Nginx、Tomcat;

    我们这里用到的是nginx版本证书,一个公钥,一个私钥。将其上传到服务器目录,我是传到了 /etc/pki/nginx 目录下,记住这个目录哦,待会配置的时候会用到

    先确认nginx安装时已编译http_ssl模块,也就是执行 nginx -V 命令查看是否存在--with-http_ssl_module。一般都会有的,如果没有,则需要重新编译nginx将该模块加入。

    修改Nginx配置

    打开 Nginx 的默认配置文件 /etc/nginx/nginx.conf ,如何打开和编辑请参考上一篇文章《云服务器搭建 Nginx 静态网站》

    打开后有两个server配置对象

    第一个是监听80端口的,内容请参考如下伪代码:
    复制代码

    server {
            listen       80;
            server_name  你的域名 www.你的域名;
            root         /data/www(你nginx配置的静态资源目录);

            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;

    # 将http强制转https
            location / {
                rewrite (.*) https://www.你的域名$1 permanent;
            }

            error_page 404 /404.html;
                location = /40x.html {
            }

            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        }

    复制代码

    第二个是监听443端口的,默认是注释的,先取消注释,内容参考如下:
    复制代码

    server {
           listen       443 ssl http2 default_server;
           listen       [::]:443 ssl http2 default_server;
           server_name  你的域名 www.你的域名;
           root         /data/www(你nginx配置的静态资源目录);
        ssl_certificate "/etc/pki/nginx/1_www.dingjianjun.cn_bundle.crt"(你刚才传到服务器上的证书地址,叫你记住的哦);
        ssl_certificate_key "/etc/pki/nginx/2_www.dingjianjun.cn.key"(你刚才传到服务器上的证书地址);
        ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m;
        ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on;
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        location / {

        }
        error_page 404 /404.html;
        location = /40x.html {

        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {

        }
      }

    复制代码

    重启nginx

    nginx -s reload

     

    顺利的话,你用浏览器访问你的域名,应该就能自动变成https了,就不用看下面的了

    ----------------------------------------分割线-----------------------------------------------

     

    我自己遇到过一个问题,就是重启失败吧,好像是80端口被占用了

    列出监听的TCP端口

    netstat -ltunp

    我是把这个冲突的进程杀死了,可以杀死指定PID的进程,比如我上面那个进程的PID是17220

    kill 17220

    然后再重启nginx:

    nginx -s reload

    到这里应该就可以了,自己多实践多调研吧,每个人情况可能不一样,希望对你有帮助!

  • 相关阅读:
    C#面试题
    深入浅出JSONP--解决ajax跨域问题
    vs切换当前编辑文件时自动定位目录树
    测试从应用到DB的准确的网络延迟
    MySQL死锁检测和回滚
    [磁盘空间]lsof处理文件恢复、句柄以及空间释放问题
    [硬件知识]OP(Over-provisioning)预留空间
    查看实例上面无主键的表
    mysql replace语句
    理解innodb buffer pool
  • 原文地址:https://www.cnblogs.com/lcword/p/14379186.html
Copyright © 2011-2022 走看看