nginx - Nginx 代理 https 到 http - 例程:ssl3_get_record:错误的版本号
问题描述
这就是我配置 Nginx 的方式
upstream stage {
server example.com;
}
server {
server_name IP;
listen 80;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header protocol Token;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass https://stage;
}
}
我在 error.log 上看到了这个
2021/11/03 15:26:14 [error] 40782#40782: *1 SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number) while SSL hands
haking to upstream, client: IP, server: IP, request: "POST / HTTP/1.1", upstream: "https://IP:80/", host: "IP:10784"
如何将用户的请求从 http 代理到 https?
解决方案
最终配置:
upstream stage {
server example.com:443;
}
server {
server_name IP;
listen 80;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host example.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header X-Forwarded-Proto: https;
proxy_ssl_verify off;
proxy_pass https://stage$request_uri;
}
}
推荐阅读
- sql - 在 Postgresql 的 JSONB 对象数组中查找具有最高值的对象
- node.js - 如果数组中有奇怪的数据,如何 $pull in mongodb?
- sql - Snowflake Substring Concat 问题:无法识别数值“”
- flutter - 颤动中所有屏幕的底部导航栏
- python - 在python代码中分别使用从命令行输入中获取的带有扩展名的stem文件名
- python - 带有离线绘图图表的cefpython3
- php - 一小时后我没有得到 refreshToken
- git - git diff A...HEAD 加上索引和未暂存的文件?
- javascript - 无法读取 null 的属性(读取“_id”)
- azure-devops - 将 if-then-else 逻辑添加到 Azure DevOps 发布管道