NGINX 反向代理適用於除 Opera GX 之外的所有瀏覽器 - 是什麼導致了這個問題?

NGINX 反向代理適用於除 Opera GX 之外的所有瀏覽器 - 是什麼導致了這個問題?

您好,我在瀏覽我的自架網站時遇到一個奇怪的問題:

當我在 Edge/Chrome/Firefox/Chromium 上瀏覽到我的 VPS 網域(應將其代理到我的 homeproxy (nginx),然後代理到家庭 webserver1)時,它會按預期工作。當我在 Opera GX 上執行相同操作時,URL 將其重寫為:https://internal_web.domain/,然後會出現 DNS 錯誤,因為我內部使用的網域在我的網路之外不存在。在內部網站伺服器上,我只託管 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 和輔助 8.8.4.4。

Opera GX 版本:LVL4(核心:98.0.4759.82)更新流:早期存取作業系統:Windows 11 64 位元 Chromium 版本:112.0.5615.165

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

VPS -> homeproxy(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;出現了一些奇怪的證書錯誤。那些也消失了。我不知道它是否是某種快取或其他什麼。

相關內容