Nginx 配置 HTTPS 过程(+反向代理)

nginx配置HTTPS前置条件

1、服务器上已经安装nginx,已经配置http访问
2、nginx服务器已经安装ssl模块
3、已经拥有ssl证书,这需要你有一个域名,并且申请了证书(免费的)
4、前端访问配置了https,则服务API也是https,所以后端也要配置https。

我这里参考了一个网友的文章,有兴趣可以直达:https://blog.csdn.net/u012486840/article/details/120940761 。

不建议只一端配置https,另一端不配置,因为浏览器会拦截并给你一个白眼:mixed-content。大意是要你: 前端https页面中不能请求 http的请求。必须将http 转为https的请求。即 nginx 配置反向代理也必须是https的。

后端的https 配置我将在后面的文章中呈现,可”搜索”本站 https。

这里略去前奏,直接上。

主要分为几步:

1、配置https server。

2、配置http重定向。

3、重启nginx,查看端口情况,访问页面。

1、配置https server。

server {
    listen       443 ssl;   # 443端口
    server_name  www.wffw88.top; # 你的域名 
    # 你的域名下申请的证书
    ssl_certificate      ../cert/www.wffw88.top_bundle.crt;
    ssl_certificate_key  ../cert/www.wffw88.top.key;
    # 默认按此配置
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout 5m;
    # 默认按此配置
    ssl_protocols TLSv1.2 TLSv1.3; 
    # 默认按此配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    ssl_prefer_server_ciphers on;
    # 这里是请求后台的API,我这里以 /koa 开头
    location ^~ /koa {
        # 反向代理 服务
        proxy_pass https://wffwkoa;
    }

    location / {
        root   html;   # 这里是静态文件目录
        index  index.html index.htm;  # 这里是入口文件名称
        # 这里是 vue-router histoey 模式的默认添加
        try_files $uri $uri/ /index.html;
    }
    # error config
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
           root   html;
    }

}

如果你暂时还不能配置后端的https,则可以在nginx https server 的 localtion /api{……}中添加请求头: add_header Content-Security-Policy upgrade-insecure-requests; 不过我试了一下,chrome 浏览器还是报错,没法访问。

上面提到的 proxy_pass https://wffwkoa; 对应的是服务器地址,我这里前端后端都配置在一个服务器上,所以使用 回环地址,我的后端服务https监听的是444端口,所以这里配置如下:

upstream wffwkoa {
    server 127.0.0.1:444;
}

2、配置http重定向。

我们需要将http的请求代理到https上,也就是永久重定向 301。我在网上查到两种跳转方式,英雄美女请自选。

server {
    listen       80;
    server_name  www.wffw88.top;
    # 转到 https
    # rewrite ^(.*)$ https://$host$1 permanent;
    return 301 https://$host$request_uri;
}

3、重启nginx,查看端口情况,访问页面。

配置好了,可以重启一下了

/usr/local/nginx/sbin/nginx -s reload

查看端口:

访问页面:cool!

 

有问题反馈加微信:mue233 私聊问我 微信公众号:焦虑自愈教程,分享过去走出来的经验
52软件资源库 » Nginx 配置 HTTPS 过程(+反向代理)