NGINX 反向代理适用于除 Opera GX 之外的所有浏览器 - 是什么导致了这个问题?

NGINX 反向代理适用于除 Opera GX 之外的所有浏览器 - 是什么导致了这个问题?

您好,我在浏览我的自托管网站时遇到了一个奇怪的问题:

当我在 Edge/Chrome/Firefox/Chromium 上浏览我的 VPS 域(应该将其代理到我的 homeproxy (nginx),然后代理到家庭 webserver1)时,它会按预期工作。当我在 Opera GX 上执行相同操作时,URL 会将其重写为:https://internal_web.domain/,然后会出现 DNS 错误,因为我内部使用的域在我的网络之外不存在。在内部 Web 服务器上,我只托管 Kanboard。如果我只使用 hello world 提供 index.html,也会发生同样的情况。

所有 3 台服务器均为:Ubuntu 22.04 nginx 版本:nginx/1.18.0 (Ubuntu)

对于内部域,我在所有机器上都有 /etc/hosts 条目,并且都能正确解析它。

在 Opera GX 中,我只打开了 Tracker 和 Ad Block,关闭了 VPN。我的 DNS 设置为 8.8.8.8 和辅助 DNS 8.8.4.4。

Opera GX 版本:LVL4(核心:98.0.4759.82)更新流:抢先体验版操作系统:Windows 11 64 位 Chromium 版本:112.0.5615.165

我在配置中屏蔽了所有 IP / 域。

VPS -> 家庭代理(nginx) -> home.webserver1(nginx)

VPS 配置 /etc/nginx/sites-enabled/webapp:

server {
        listen 80;
        server_name vps.myserver.domain;
        return 301 https://$host$request_uri;

        access_log /var/log/nginx/vps.myserver.domain.access.log;
        error_log /var/log/nginx/vps.myserver.domain.error.log;
}

server {
        listen                  443 ssl http2;
        server_name             vps.myserver.domain;
        ssl_certificate         /etc/nginx/ssl/vps.myserver.domain.pem;
        ssl_certificate_key     /etc/nginx/ssl/vps.myserver.domain.key;
        ssl_protocols           TLSv1.3;

        access_log /var/log/nginx/vps.myserver.domain.access.log;
        error_log /var/log/nginx/vps.myserver.domain.error.log;

        location / {
                proxy_pass http://homewebapp.myserver.domain;
        }
}

homeproxy(nginx)/etc/nginx/sites-enabled/webapp:

server {
        listen 80;
        server_name homewebapp.myserver.domain;
        location / {
                proxy_pass http://internal_webapp.domain;
        }

        access_log /var/log/nginx/homewebapp.myserver.domain.access.log;
        error_log /var/log/nginx/homewebapp.myserver.domain.error.log;

}

home.webserver1(nginx)/etc/nginx/sites-enabled/webapp:

server {
        listen 80 default_server;
        root /var/www/html/webapp/;
        index index.html index.htm index.nginx-debian.html;
        server_name internal_webapp.domain;
        index index.php;
        location / {
                try_files $uri $uri/ /index.php$is_args$args;
        }
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_index index.php;
                include fastcgi_params;
        }
        # Deny access to the directory data
        location ~* /data {
                deny all;
                return 404;
        }
        # Deny access to .htaccess
        location ~ /\.ht {
                deny all;
                return 404;
        }
}

NGINX 配置的其余部分是默认的。

我还在配置中尝试了 proxy_set_header 来获取真实 IP 等。但我还没有发现 Opera GX 的行为为何如此。我搜索了一下,但没有找到任何相关信息,只有 2017 年的一个旧帖子,其中 Opera GX 在每个网站上都崩溃了,但在这种情况下,其他一切都正常,只是我的网站不正常。

在 Opera GX 上,我也尝试使用新的配置文件,没有启用附加组件或 Adblock / Tracker Blocker。

我的问题是:

这是我的 NGINX 配置错误还是 Opera GX 出现问题?如果是我的 NGINX,我该如何解决这个问题?如果是 Opera GX,我想我应该在他们的 Bug Tracker 上打开一个问题?

答案1

在我切换默认浏览器一段时间后,它现在又可以正常工作了……我不知道为什么。我还测试了 Safari,一些移动浏览器都运行正常。我不知道 Opera GX 在这里有什么不同。我正在为它写一个 Bug 报告,突然它就正常工作了。

我还在后面添加了另一个配置,default_server结果listen $PORT;出现了一些奇怪的证书错误。这些也消失了。我不知道这是否是某种缓存之类的问题。

相关内容