背景
- 我有两台机器,local、dev,没有公网IP
- 其中 local 无法直接访问 https://xxx.yyy.com
- dev 可以访问 https://www.baidu.com,访问必须走 https 协议
需要满足以下要求
- 反向代理服务在 dev 机器上,以Docker容器方式启动,对外提供服务能力的端口设置为 8083
- local 访问 dev 只支持 http 协议,不支持走 https 协议
- 使用场景是开发环境,可以忽略 SSL 证书验证,可以使用系统内置的 CA 证书验证服务器证书的合法性
实现逻辑
- 下载CA文件
curl https://curl.se/ca/cacert.pem -o /data/reverse-proxy/cacert.pem
- 配置Ningx
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name xxx.yyy.com;
location / {
proxy_pass https://xxx.yyy.com;
proxy_set_header Authorization "Basic base64-string";
proxy_set_header Host xxx.yyy.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_verify on;
proxy_ssl_trusted_certificate /etc/nginx/cacert.pem;
proxy_ssl_server_name on;
proxy_ssl_name xxx.yyy.com;
}
}
}
- 启动代理服务
docker run -d --name reverse-proxy -v /data/reverse-proxy:/etc/nginx -p 8083:80 nginx
- 在local机器访问
curl -x http://<dev IP>:8083 http://xxx.yyy.com