パブリックドメイン名の代わりに内部サーバー名を使用した nginx GET リクエスト

パブリックドメイン名の代わりに内部サーバー名を使用した nginx GET リクエスト

Ubuntu Server 22.04 LTSでnginxリバースプロキシを設定しました。Abacusウェブアプリケーションは、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;
    }
}

ウェブサイトはアクセス可能で、ログインも基本的に機能します。問題は、ウェブサイト自体で起動されるウェブアプリケーションです。ログイン後、.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;
    }

関連情報