Nginx搭建HTTPS,并反向代理到web页面,mkcert生成本地SSL证书

生成证书

安装mkcert

brew install mkcert
brew install nss # if you use Firefox

生成根证书

mkcert -install

通过钥匙串访问.app搜索mkcert,并信任证书。

生成个人证书

mkcert my.com localhost 127.0.0.1

证书文件在执行目录中,成功创建之后,会在该目录下生成如下两个文件:

证书 XXX.pem 私钥 XXX-key.pem

Ngixn Server 配置

brew install nginx

修改nginx配置文件

open /usr/local/etc/nginx/nginx.conf

添加在http属性下的server,以localhost为例,注意修改证书和私钥的地址。如果需要添加my.com的,则在配置文件中并行添加其他的server配置。

server {
        listen       80;
        listen       443 ssl;
        server_name  localhost;

        # 设置 SSL 证书和私钥地址
        ssl_certificate      local_ssl/my.com-SSL.pem;
        ssl_certificate_key  local_ssl/my.com-SSL-key.pem;

        # SSL 会话配置
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  10m;

        # SSL 协议、加密配置
        ssl_protocols  TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
        }

启动或重启nginx服务,选一个即可

#检查nginx 配置是否正确
nginx -t
# 重启nginx
nginx -s reload

访问https://localhostopen in new window验证是否生效。

反向代理到指定自定义页面

开启服务

我通过本地服务器开启了一个127.0.0.1:8080的web页面

配置电脑的host

vim /etc/hosts
#添加域名映射
127.0.0.1 my.com

配置nginx

也可以不用配置。

配置server的配置,添my.com的https服务

# 反向代理
server {
        listen       443 ssl;
        server_name  my.com;

        location / {
            proxy_pass 'http://127.0.0.1:8080';
        }
    }

访问web

访问https://my.comopen in new window验证是否成功,浏览器提示应该显示“连接是安全的”,对于chrome来说,会在链接输入栏左侧有个小锁。

Loading...