nginx (三) 配置 https 请求

使用 nginx配置 https 时,处理过程可以分为两步

  • 使用 nginx 配置的证书,与客户端做 https 交互
  • 请求经过 nginx 后,https 协议转换成 http 协议,与服务做 http交互

https 原理,参考下面的文章https://juejin.cn/post/7054482275211149349

生成自签证书

此处我们借助于 openssl 生成自己的 自签证书

1. 使用 openssl 生成私钥

openssl genrsa -out server.key 1024

完整的签名过程,同时需要公钥和私钥的。即用第 1 步生成私钥继续生成公钥。但自签证书不需要真正的对证书合法性进行验证。因此,只需要私钥即可。

2. 根据生成的私钥生成申请证书

openssl req -new -key server.key -out server.csr

根据私钥生成证书文件;(证书的核心就是公钥)
3. 使用私钥对申请证书进行签名,生成证书(有效期 10 年)

openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650

注意:

  • 私钥一般是 .key或者 .private 结尾
  • 证书一般是 .crt 结尾 (certificate)

4. 接下来,查看刚生成证书内容,直接在 SSL在线解析网站查看 例如 ssl在线工具

配置 nginx 解析 https 请求

  • 禁止请求访问 80端口。将所有的访问 80 端口的请求,转发到 443
  • 配置 https 证书
  • https 解析后的 http 请求转发到对应的服务

配置文件如下

server {
    listen 80;
    server_name vm.ser.cn;
    rewrite ^(.*) https://$host$request_uri?;
}
server {
    listen 443 ssl;
    server_name vm.ser.cn;
    ssl_certificate /home/peng/nginx/openssl-key/server.crt; # 证书的位置
    ssl_certificate_key /home/peng/nginx/openssl-key/server.key; # 私钥的位置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
    ssl_prefer_server_ciphers on; # 是否有服务器来决定用哪种加密算法
    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:90;
    }
}

server {
    listen 90;
    location ~ /gin/(.*) {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:5003/$1$is_args$args;
    }
}

字符替换

Accept-Encoding 设为空值,以禁用压缩,是因为 sub_filter 只能处理未经压缩的内容;又 sub_filter 一般只替换 text/html 且仅工作一次,不符合需求,故对配置稍做微调。

location / {
    ... 
    proxy_set_header Accept-Encoding '';
    sub_filter_types *;
    sub_filter_once off;
    sub_filter '查找内容:源站域名' '替换为:反代站域名';
    ...
}

注意: nginx默认是不安装 ngx_http_sub_module 模块的,直接应用 sub_filter 指令将报错:

# 编译
./configure --prefix=/data/nginx  --with-http_sub_module
# 安装
make install
posted @ 2023-03-14 07:18  沧海一声笑rush  阅读(220)  评论(0编辑  收藏  举报