nginx サーバーに SSL 証明書をインストールした後、ノード アプリケーションにログインできない

nginx サーバーに SSL 証明書をインストールした後、ノード アプリケーションにログインできない

私は、フロントエンドが Nginx http Web サーバーに、バックエンド (分子マイクロサービス) がノード サーバーにデプロイされたノード アプリケーションを所有しています。どちらも AWS ec2 Linux VM 上にあります。アプリケーションの URL は、基本的にこの Linux サーバーのホスト名またはパブリック IPv4 アドレス (http://hostname:80 または http://ipv4:8080) です。この URL は安全でなかったため、SSL を使用して保護しようと考えました。そのために、cloudns.net からドメイン名を購入し、ec2 インスタンスのパブリック IPv4 にポイントバックしました。これで、certbot と letsencrpt.org を使用して Nginx サーバーに SSL 証明書がインストールされ、ログイン ページに https が含まれ、SSL 証明書が正しく表示されるようになりました (https://host.購入したドメイン名)。現在、資格情報を渡してアプリケーションにサインインしようとすると、サインインできず、検査要素を使用してチェックすると (Chrome を使用)、要求 URL は何も返さず、エラーは ERR_CONNECTION_CLOSED です。この要求 URL は、8082 ポートで要求を行う post メソッドです。要求 URL は次のようになります: https://hostname:8082/v1/auth/signin ここで言及するもう 1 つの点は、SSL をインストールする前は、アプリケーションのエンドポイント URL にポート番号 80、8080 を追加することができ、入力すると最終的にホスト名だけになります (http://hostname/signin?)。ただし、SSL をインストールした後は、https URL に何かを追加すると (https://mypurchasedhostname:8080 など)、サイトにアクセスできないというエラーがスローされ、これはサインインの要求 URL でも同じことが起きているようです。ただし、これらのポート (80、8080) を http://hostname で指定すると、最終的には https://hostname/somewelcometext になり、サインイン ページが開きます。

サーバー構成の問題なのか、バックエンドでも何か変更する必要があるのか​​はわかりません。ログインリクエストURLには以前はhttpが含まれていましたが、コンテンツ混在エラーを回避するためにバックエンドからhttpsに変更しました。以下はnginx.confSSL 構成を追加する前と追加した後のファイル。

SSLなし:

sudo vim /etc/nginx/nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

  #Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

     server {
        listen       80 default_server;
        listen       8080 default_server;
        server_name  mypurchasedhostname;
        root         /usr/share/nginx/html;
        index        index.html;



        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            try_files $uri $uri/ /index.html;
            add_header Cache-Control 'no-cache';
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }}

SSL の場合:

sudo vim /etc/nginx/nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

    # Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

     server {
        listen       80 default_server;
        listen       8080 default_server;
        server_name  mypurchasedhostname;
       # root         /usr/share/nginx/html;
       # index        index.html;
       return 301 https://$host$request_uri;

    }


#SSL settings

server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name  mypurchasedhostname;
    root         /usr/share/nginx/html;
    index        index.html;

    ssl_certificate /etc/letsencrypt/live/mypurchasedhostname/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mypurchasedhostname/privkey.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;

    # curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam
    # ssl_dhparam /path/to/dhparam;

    # intermediate configuration
    ssl_protocols TLSv1.2;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers on;

    # HSTS (ngx_http_headers_module is required) (63072000 seconds)
    add_header Strict-Transport-Security "max-age=63072000" always;

    # OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;

    # verify chain of trust of OCSP response using Root CA and Intermediate certs
    # ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

    # replace with the IP address of your resolver
    resolver 8.8.8.8;
    # Load configuration files for the default server block.

        include /etc/nginx/default.d/*.conf;

        location / {
            try_files $uri $uri/ /index.html;
            add_header Cache-Control 'no-cache';
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }

}

}

関連情報