nginx가 https로 리디렉션되지 않습니다.

nginx가 https로 리디렉션되지 않습니다.

나는 다음 지침을 따르고 있습니다.이 페이지DigitalOcean 드롭릿에 R Shiny 서버를 설정합니다.

내가 갖고 싶은 것:

  1. Shiny.domain.com에서 실행되는 Shiny 서버
  2. Shiny.domain.com에서 다음으로 자동 리디렉션됩니다.https://shiny.domain.com
  3. 다음에서 자동 리디렉션http://shiny.domain.com에게https://shiny.domain.com

현재 1과 2는 작동하지만 3은 작동하지 않습니다. https를 먼저 방문하면 http가 https로 리디렉션되지만 http를 처음 사용하는 경우(예: 시크릿 창에서) 대신 Nginx 시작 페이지가 표시됩니다.

내 Nginx 구성은 다음과 같습니다(Shiny 서버는 3838을 수신하므로 역방향 프록시가 자동으로 트래픽을 리디렉션하도록 설정되므로 위 링크에 설명된 것처럼 매번 :3838을 입력할 필요가 없습니다).

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

저는 nginx를 처음 접했으므로 이에 대한 도움을 주시면 감사하겠습니다.

답변1

server에 대한 블록이 누락 http되었습니다 server_name. 이는 nginx가 이러한 요청에 를 사용하여 default_server환영 페이지를 표시한다는 것을 의미합니다.

첫 번째 블록을 다음으로 교체하세요.

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

    server_name shiny.example.com;

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

관련 정보