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

4 小时 42 分钟前
 KadeDivent

迁移了一个 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

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

218 次点击
所在节点    NGINX
5 条回复
kaf
4 小时 26 分钟前
你有看看 http 的配置一样吗
kk2syc
4 小时 24 分钟前
connection reset by peer

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

@kk2syc 可以确定 dns 没有问题,我在修改了端口号,取消 https 的情况下就可以连接,并且浏览器上是可以访问管理地址的
kk2syc
4 小时 12 分钟前
@KadeDivent 可以肯定和 nginx 的版本升级没有关系
zed1018
3 小时 5 分钟前
如果我没有理解错,你这个应该是 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;
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1085831

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX