nginx no redirige a https

nginx no redirige a https

Estoy siguiendo las instrucciones deesta páginapara configurar un servidor R Shiny en una gota de DigitalOcean.

Lo que me gustaría tener:

  1. Un servidor Shiny ejecutándose en shiny.dominio.com
  2. Redirección automática desde shiny.domain.com ahttps://shiny.dominio.com
  3. Redirección automática desdehttp://shiny.dominio.comahttps://shiny.dominio.com

De momento funcionan 1 y 2, pero 3 no. Si visito https primero, http se redirige a https, pero si uso http la primera vez (por ejemplo, en una ventana de incógnito), aparece la página de bienvenida de Nginx.

Mi configuración de Nginx es la siguiente (el servidor Shiny escucha 3838, por lo que se configura un proxy inverso para redirigir automáticamente el tráfico, por lo que no tengo que escribir :3838 cada vez, como se explica en el enlace anterior)

server {
listen 80;
listen [::]:80;

# redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    ssl_certificate <path to certificate>;
    ssl_certificate_key <path to key>;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;

    ssl_dhparam /etc/nginx/snippets/dhparam.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers xxxxxx
    ssl_prefer_server_ciphers off;

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

    ssl_trusted_certificate <path to chain.pem>

    server_name shiny.domain.com;  

    location / {
        proxy_pass http://localhost:3838;
        proxy_redirect http://localhost:3838/ $scheme://$host/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_read_timeout 20d;
        proxy_buffering off;
        }
    }

Soy extremadamente nuevo en nginx, así que agradecería algo de ayuda con esto.

Respuesta1

Falta tu serverbloque para . Esto significa que nginx utilizará para estas solicitudes, que mostrará la página de bienvenida.httpserver_namedefault_server

Reemplace su primer bloque con:

server {
    listen 80;
    listen [::]:80;

    server_name shiny.example.com;

    return 301 https://shiny.example.com;
}

información relacionada