V2EX › NGINX
NGINX 求助 禁止访问 https://ip 后,前端机器 proxy 502
ab ·
2022 年 4 月 6 日 · 3083 次点击
这是一个创建于 1377 天前的主题,其中的信息可能已经有所发展或是发生改变。
为关闭 ip 直接访问,我们在后端机器的 nginx 添加配置
原配置:
server {
listen 80 default_server;
listen 443 ssl http2 default_server;
server_name _;
ssl_certificate cert/empty.crt; #自签假证
ssl_certificate_key cert/empty.key; #自签假证
return 444;
}
新配置:
server {
listen 80 default_server;
listen 443 ssl http2 default_server;
server_name _;
ssl_reject_handshake on; # nginx 1.19 新参数
return 444;
}
改了新配置以后,前端反代某个已在后端绑定的域名时,80 端口可以正常请求到,但 443 全部 502 ,请老哥们赐教了
(追記) (追記ここまで)
14 条回复 • 2022年04月07日 07:51:29 +08:00
ZE3kr
1
ZE3kr 2022 年 4 月 6 日 via iPhone
看 errorlog
Judoon
2
Judoon 2022 年 4 月 6 日 ❤️ 1
前端反代 443 时向后端也是 443 访问吗?那目测直接握手拒绝了,建立连接时没有带 SNI 信息吧?
ab
3
ab 2022 年 4 月 6 日
@
Judoon 是的,直接反代 403
proxy_cache off;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header Referer $http_referer;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
Judoon
5
Judoon 2022 年 4 月 6 日
(追記) (追記ここまで)
GBdG6clg2Jy17ua5
6
GBdG6clg2Jy17ua5 2022 年 4 月 6 日
将 80,443 配置成两个 server 块。443 类似你原来的配置。
cnrting
7
cnrting 2022 年 4 月 6 日 via iPhone
ssl_reject_handshake on; 没用过这参数,可是看字面意思返回 502 难道不是正常反应吗
ab
8
ab 2022 年 4 月 6 日 ❤️ 1
5 楼正解
非常谢谢 @
Judoon @
angryfish @
cnrting ssl_reject_handshake on;这个参数是没有绑定域名的访问拒绝握手。前端需要向后端发送 SNI 信息
添加以下两行解决
proxy_ssl_server_name on;
proxy_ssl_name $host;
Silently
9
Silently 2022 年 4 月 6 日 via iPhone
@
ab 如果有多个 location 块的话 是需要每个都添加么 还是单 /这个块添加
Silently
10
Silently 2022 年 4 月 6 日 via iPhone
ab
11
ab 2022 年 4 月 6 日 via iPhone
我是加在 server 段,只用来禁用非绑定的域名
ab
12
ab 2022 年 4 月 6 日 via iPhone
Silently
13
Silently 2022 年 4 月 6 日 via iPhone
yxnwh
14
yxnwh 2022 年 4 月 7 日
多谢,mark 一记,之前也遇到了类似问题
(追記) (追記ここまで)