nginx+宝塔面板配置https

前提条件:

    已经购买服务器 已经安装宝塔面板 已经有域名 已经申请ssl证书

方法一: 使用宝塔面板一键配置https

  1. 实例使用的是腾讯服务器并且在腾讯买的域名;首先将申请好的ssl证书下载: 选择下载Nginx版:
  2. 打开宝塔面板>网站>设置: 随后点击弹出窗口右侧SSL,打开上述下载好的SSL证书文件夹,将.pem和.key结尾的文件分别用记事本打开后复制其中的内容到对应的输入框:
  3. 点击保存,开启强制HTTPS,大功告成!

方法二:使用nginx手动配置 https

  1. 下载对应SSL证书(和方法一版本一致),在将证书文件夹中的.pem,.key文件上传到对应文件夹下:/www/server/nginx/conf/
  2. 检查是否放行了443端口。随后打开宝塔面板的软件商店,找到nginx,点击设置,点击配置修改:‘
server {
        listen 80;
        listen 443 ssl http2;
        server_name example.com;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For 
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Headers X-Requested-With;
        add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
        # HTTPS start------
        # 如果访问的不是443端口跳转到https协议        
        if ($server_port !~ 443){
            rewrite ^(/.*)$ https://$host$1 permanent;
         }
        # 上传的.pem和.key文件路径
        ssl_certificate /www/server/nginx/conf/xxxxxx.pem;
        ssl_certificate_key /www/server/nginx/conf/xxxxxx.key;
        # 指定客户端可以重用会话参数的时间
        ssl_session_timeout 10m;
        #表示使用的加密套件的类型。
        ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        #表示使用的TLS协议的类型。
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        # 服务端加密算法优先
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        # HTTPS end------
        location / {
            root /home/;
        }
    }
  1. 点击保存,重启nginx

说明: 比如我们现在要访问https://example.com/images/user-img.png这样一张存放在服务器上的图片,当我们开启https服务后就可以通过上述方式访问,也能够通过http访问。因为http默认端口80,https默认端口443,当我们以80端口访问时就会被检测到不是443端口,从而强制切换到https协议即443端口。

这也是为什么同时listen 443 和 80 的原因~

经验分享 程序员 微信小程序 职场和发展