Nginx リバース プロキシが HTTPS リダイレクトを構成すると、プロトコルは HTTP になります。

400 Bad Request: プレーン HTTP リクエストが HTTPS ポートに送信されました

1. 背景の紹介

NginxプロキシバックエンドサービスではNginxHTTPSポートのみ監視しており、初めて開いたインターフェースから他のインターフェースに入るとプロトコルに変更されてHTTP開けなくなります。HTTPSに変更後はジャンプ後のインターフェースも可能になります開いた。通常の状況では、2 つのポートをリッスンすると、301 を使用してリダイレクトを実行できるため、この問題は解決されます。しかし、現在はHTTPS契約書を開くだけです。

server {
    
    
    listen 23182 ssl;
    server_name test.example.com;

    ssl_certificate /etc/nginx/ssl/example.com/example.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;

    access_log /var/log/nginx/example-test.access.log main;
    error_log  /var/log/nginx/example-test.err.log    warn;

    location / {
    
    
            proxy_pass http://10.10.1.21:8080;
            proxy_set_header        Host $host:$server_port;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size    10m;
            client_body_buffer_size 128k;
            proxy_connect_timeout   5;
            proxy_send_timeout      10;
            proxy_read_timeout      10;
            proxy_buffer_size       4k;
            proxy_buffers           4 32k;
            proxy_busy_buffers_size 64k;
            proxy_temp_file_write_size 64k;
    }
}

2. 問題解決

proxy_redirect http:// https:// この構成により、リダイレクト後の問題を解決できhttpsますhttpproxy_redirectこの関数は比較的強力で、その機能はクライアントに送信される URL を変更することです。

server {
    
    
    listen 23182 ssl;
    server_name test.example.com;

    ssl_certificate /etc/nginx/ssl/example.com/example.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;

    access_log /var/log/nginx/example-test.access.log main;
    error_log  /var/log/nginx/example-test.err.log    warn;

    location / {
    
    
            proxy_pass http://10.10.1.21:8080;
            proxy_redirect          http:// https://;               # 这个配置
            proxy_set_header        Host $host:$server_port;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;      # 这个配置
            client_max_body_size    10m;
            client_body_buffer_size 128k;
            proxy_connect_timeout   5;
            proxy_send_timeout      10;
            proxy_read_timeout      10;
            proxy_buffer_size       4k;
            proxy_buffers           4 32k;
            proxy_busy_buffers_size 64k;
            proxy_temp_file_write_size 64k;
    }
}

おすすめ

転載: blog.csdn.net/qq_25854057/article/details/126751250