Depois que o proxy reverso Nginx configura o redirecionamento HTTPS, o protocolo se torna HTTP

400 Solicitação incorreta: a solicitação HTTP simples foi enviada para a porta HTTPS

1. Introdução ao contexto

Através Nginxdo serviço backend de proxy, Nginxapenas a porta HTTPS é monitorada, e ao entrar em outras interfaces pela interface aberta pela primeira vez, ela é alterada para o HTTPprotocolo e não pode ser aberta. Depois de mudar HTTPSpara , a interface após o salto também pode ser aberto. Em circunstâncias normais, quando escutamos duas portas, esse problema é resolvido, pois podemos usar 301 para fazer um redirecionamento. Mas atualmente só abro o HTTPSacordo.

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. Resolução de problemas

proxy_redirect http:// https:// Esta configuração pode resolver o problema de httpstornar-se após o redirecionamento http. proxy_redirectA função é relativamente poderosa e sua função é modificar a URL enviada ao cliente.

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;
    }
}

Acho que você gosta

Origin blog.csdn.net/qq_25854057/article/details/126751250
Recomendado
Clasificación