nginx GET 請求使用內部伺服器名稱而不是公共域名

nginx GET 請求使用內部伺服器名稱而不是公共域名

我已經使用 Ubuntu Server 22.04 LTS 設定了 nginx 反向代理程式。 Abacus Web 應用程式應該可以透過以下方式存取https://abacus.contoso.com來自網路。內部伺服器名稱為 srv06。我目前的配置如下所示(這基本上是 Abacus 的官方模板):

server {
    listen 443 ssl;
    server_name abacus.contoso.com;

    ssl_certificate /etc/nginx/ssl_certs/cert.pem;
    ssl_certificate_key /etc/nginx/ssl_certs/cert.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_protocols TLSv1.2;
    ssl_prefer_server_ciphers  on;

    location / {
            root   html;
            index  index.html index.htm;
            resolver 127.0.0.53;
            proxy_pass https://abacus.contoso.com:40001$uri$is_args$query_string;
            proxy_redirect https://abacus.contoso.com:40001/ https://$host/;
            proxy_set_header Host abacus.contoso.com;

            client_max_body_size 0;
            proxy_connect_timeout 90s;
            proxy_send_timeout 90s;
            proxy_read_timeout 90s;
            send_timeout 90s;
    }
}

網站可以訪問,登入基本上可以使用。問題是透過網站本身啟動的 Web 應用程式。登入後,將下載 .abalink 檔案並使用 AbaClient 軟體啟動。此 AbaClient 嘗試使用 URI 存取伺服器https://abacus.contoso.com透過代理 - 這是正確的 - 但似乎 nginx 或內部伺服器使用內部伺服器名稱 srv06 而不是網域來應答請求。這是我收到的錯誤訊息:「對 Abacus 伺服器的 GET 請求失敗 (srv06)」。

我的程式碼中是否缺少某些內容?我對 nginx 比較陌生,所以我希望有人可以幫助我。

謝謝你!

答案1

我不確定為什麼人們會使用這種過於複雜的代理設定而不是簡單的預設。

嘗試這個:

    location / {
            proxy_pass https://abacus.contoso.com:40001;
            proxy_set_header Host abacus.contoso.com;

            client_max_body_size 0;
            proxy_connect_timeout 90s;
            proxy_send_timeout 90s;
            proxy_read_timeout 90s;
            send_timeout 90s;
    }

相關內容