V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
ab
V2EX  ›  NGINX

NGINX 求助 禁止访问 https://ip 后,前端机器 proxy 502

  •  
  •   ab · 2022-04-06 14:36:20 +08:00 · 2510 次点击
    这是一个创建于 939 天前的主题,其中的信息可能已经有所发展或是发生改变。
    为关闭 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-04-06 14:38:12 +08:00 via iPhone
    看 errorlog
    Judoon
        2
    Judoon  
       2022-04-06 14:44:38 +08:00   ❤️ 1
    前端反代 443 时向后端也是 443 访问吗?那目测直接握手拒绝了,建立连接时没有带 SNI 信息吧?
    ab
        3
    ab  
    OP
       2022-04-06 14:48:31 +08:00
    @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;
    ab
        4
    ab  
    OP
       2022-04-06 14:48:52 +08:00
    @Judoon 是的,直接反代 443
    Judoon
        5
    Judoon  
       2022-04-06 14:52:30 +08:00
    angryfish
        6
    angryfish  
       2022-04-06 15:20:59 +08:00
    将 80,443 配置成两个 server 块。443 类似你原来的配置。
    cnrting
        7
    cnrting  
       2022-04-06 15:21:44 +08:00 via iPhone
    ssl_reject_handshake on; 没用过这参数,可是看字面意思返回 502 难道不是正常反应吗
    ab
        8
    ab  
    OP
       2022-04-06 15:29:22 +08:00   ❤️ 1
    5 楼正解
    非常谢谢 @Judoon

    @angryfish
    @cnrting

    ssl_reject_handshake on;这个参数是没有绑定域名的访问拒绝握手。前端需要向后端发送 SNI 信息

    添加以下两行解决
    proxy_ssl_server_name on;
    proxy_ssl_name $host;
    Silently
        9
    Silently  
       2022-04-06 16:15:54 +08:00 via iPhone
    @ab 如果有多个 location 块的话 是需要每个都添加么 还是单 /这个块添加
    Silently
        10
    Silently  
       2022-04-06 16:18:59 +08:00 via iPhone
    @Silently 我看说明是可以直接添加到 server 块上
    ab
        11
    ab  
    OP
       2022-04-06 21:19:48 +08:00 via iPhone
    我是加在 server 段,只用来禁用非绑定的域名
    ab
        12
    ab  
    OP
       2022-04-06 21:19:59 +08:00 via iPhone
    Silently
        13
    Silently  
       2022-04-06 22:05:07 +08:00 via iPhone
    @ab 用上了 谢谢
    yxnwh
        14
    yxnwh  
       2022-04-07 07:51:29 +08:00
    多谢,mark 一记,之前也遇到了类似问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2240 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:01 · PVG 08:01 · LAX 17:01 · JFK 20:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.