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

请教一下各位关于 nginx 版本更新区别导致反向代理无法访问的问题

  •  
  •   KadeDivent · 15 天前 · 882 次点击

    迁移了一个 headscale 服务端,反向代理配置了 headscale-ui 的静态页面

    我将 centos 7 中的 nginx v1.20.1 配置迁移到了 rocky linux 9 中的 nginx v1.26.2 中,

    使用的均为 rpm 包

    nginx v1.20.1 是官方源中下载

    nginx v1.26.2 是从 nginx 源中下载


    迁移之后 headscale 被反向代理后的 8082 端口就无法访问了,但是原生的 8080 端口可以访问,

    两个站点配置完全一样,是直接复制过去的

    新版本的 nginx 日志中没有相关访问日志

    并且 nginx 的主要更新日志,并没有什么头绪,所以发帖请教一下各位


    以下是日志与配置

    站点主要配置如下

    server {
        listen              8082 ssl ;
        listen              [::]:8082 ssl ;
        server_name         xxxx;
        root                /opt/headscale/headscale-ui/web;
    
        # SSL
        ssl_certificate     /etc/nginx/cert/xxxx.crt;
        ssl_certificate_key /etc/nginx/cert/xxxx.key;
        ssl_protocols TLSv1.2 TLSv1.3;
    
        # logging
        # 这里其实有日志配置,但是不知道放进来就不能发帖
    
        location /web {
            alias /opt/headscale/headscale-ui/web;
            index index.html;
        }
    
        # reverse proxy
        location / {
            proxy_pass            http://127.0.0.1:8080;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            proxy_set_header Host $server_name;
            proxy_redirect http:// https://;
            proxy_buffering off;
            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 $http_x_forwarded_proto;
            add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
        }
    
    }
    
    

    headscale 的部分日志如下

    Nov 01 17:13:17 xxxxxx tailscaled[2145341]: control: LoginInteractive -> regen=true
    Nov 01 17:13:17 xxxxxx tailscaled[2145341]: control: doLogin(regen=true, hasUrl=false)
    Nov 01 17:13:17 xxxxxx tailscaled[2145341]: Received error: fetch control key: Get "https://xxxxxx:8082/key?v=106": read tcp 192.168.2.199:36346->xx.xx.xx.xx:8082: read: connection reset by peer
    Nov 01 17:13:17 xxxxxx tailscaled[2145341]: health(warnable=login-state): error: You are logged out. The last login error was: fetch control key: Get "https://xxxxxx:8082/key?v=106": read tcp 192.168.2.199:36346->xx.xx.xx.xx:8082: read: connection reset by peer
    

    nginx 的版本信息如下

    旧服务器

    nginx version: nginx/1.20.1
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
    built with OpenSSL 1.1.1k  FIPS 25 Mar 2021
    TLS SNI support enabled
    

    新服务器

    nginx version: nginx/1.26.2
    built by gcc 11.4.1 20231218 (Red Hat 11.4.1-3) (GCC) 
    built with OpenSSL 3.0.7 1 Nov 2022
    TLS SNI support enabled
    

    详细的编译参数放不进去,如果有需要的话,后续考虑截图放在后面

    9 条回复    2024-11-04 21:38:08 +08:00
    kaf
        1
    kaf  
       15 天前
    你有看看 http 的配置一样吗
    kk2syc
        2
    kk2syc  
       15 天前
    connection reset by peer

    笑 cry ,你真的不考虑是新机器的网络问题吗?(大概率是 dns )
    KadeDivent
        3
    KadeDivent  
    OP
       15 天前
    @kaf http 配置是一样的,配置文件是复制过去的

    @kk2syc 可以确定 dns 没有问题,我在修改了端口号,取消 https 的情况下就可以连接,并且浏览器上是可以访问管理地址的
    kk2syc
        4
    kk2syc  
       15 天前
    @KadeDivent 可以肯定和 nginx 的版本升级没有关系
    zed1018
        5
    zed1018  
       15 天前
    如果我没有理解错,你这个应该是 nginx 提供 https 卸载 http 明文到 8080 ,我看了一下我之前用 nginx 这么反代 java api 的时候,只配置了这些 proxy 相关的头,op 可以试试

    ```
    proxy_set_header Host $http_host;
    proxy_set_header Connection "";
    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_http_version 1.1;
    proxy_read_timeout 180s;
    ```
    xqzr
        6
    xqzr  
       14 天前   ❤️ 1
    > read: connection reset by peer

    考虑 SNI 阻断
    devopsdogdog
        7
    devopsdogdog  
       13 天前 via Android
    大概率网络问题,或者是 ssl 指定了 1.2 1.3 要求这么高吗?新老版本的依赖 openssl 差距也比较大
    KadeDivent
        8
    KadeDivent  
    OP
       12 天前
    @xqzr 感谢,测试了一下就是 SNI 阻断,不明白为什么国内的服务器也会这么做,正在和客服对线中
    xqzr
        9
    xqzr  
       12 天前
    > 不明白为什么国内的服务器也会这么做,正在和客服对线中

    域名未备案。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1730 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:48 · PVG 00:48 · LAX 08:48 · JFK 11:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.