여러 도메인이 있는 Nginx HTTPS 리디렉션 루프

여러 도메인이 있는 Nginx HTTPS 리디렉션 루프

유사한 주제에 대한 다른 질문이 있다는 것을 알고 있지만 특정 문제를 해결하는 솔루션을 어디에서도 찾을 수 없습니다. 여기서 차이점은 사이트가 다른 여러 도메인입니다.

여러 도메인으로 Nginx를 설정했습니다: example1.comexample2.com. 다음을 갖는 "기본" 호스트 파일도 있습니다."Nginx에 오신 것을 환영합니다!" 기본 웹페이지.

다음을 포함하여 몇 가지 다른 구성을 시도했습니다.

# 1
server {
   server_name example2.com www.example2.com;
   listen 80;
   return 301 https://example2.com$request_uri;
}
server {
    server_name example2.com www.example2.com;
    listen 443 default_server;

    ssl_certificate /etc/letsencrypt/live/example2.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/example2.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

# 2
server {
    server_name example2.com www.example2.com;
    listen 80;
    listen 443

    return 301 https://example2.com$request_uri;

    ssl_certificate /etc/letsencrypt/live/example2.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/example2.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

}

1결과는 다음과 같습니다.

  • http://예2.com 리디렉션 중https://예2"환영" 페이지를 표시하는 .com
  • http://예1.com 리디렉션 중https://예2"환영" 페이지를 표시하는 .com
  • https://예1예제의 실제 내용을 보여주는 .com1.com

2결과는 다음과 같습니다.

  • http://예2리디렉션 루프가 있는 .com
  • https://예2리디렉션 루프가 있는 .com
  • http://예1.com 리디렉션 중http://예2리디렉션 루프가 있는 .com
  • https://예1예제의 실제 내용을 보여주는 .com1.com

example2.com기본 "Welcome" 폴더에 의 콘텐츠를 넣을 수 없습니다 . 그렇지 않으면 에 영향을 미칠 수 있습니다 example1.com.

답변1

Richard Smith 덕분에 내가 어떻게 일을 망쳤는지 알게 됐어요. 루트 위치를 올바르게 포함하지 않았습니다. 다른 사람에게 도움이 될 수 있는 경우를 대비해 올바른 파일은 다음과 같습니다.

# example2.com.conf:
server {
    server_name example2.com www.example2.com;
    listen      80;
    return      301 https://example2.com$request_uri;
    # What I was missing:
    root            /var/www/example2-com;
}
server {
    server_name     example2.com www.example2.com;
    listen      443 ssl;# default_server;

    # What I was missing:
    root            /var/www/example2-com;

    ssl_certificate /etc/letsencrypt/live/example2.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/example2.com/privkey.pem;
    include         /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam     /etc/letsencrypt/ssl-dhparams.pem;

}

# example1.com.conf:
server {
    server_name example1.com www.example1.com;
    listen      80;
    return      301 https://example1.com$request_uri;

    # What I was missing:
    root            /var/www/example1-com;
}
server {
    server_name     nerd.ink www.nerd.ink;
    listen      443 ssl; # default_server;

    # What I was missing:
    root            /var/www/example1-com;

    ssl_certificate /etc/letsencrypt/live/example1.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/example1.com/privkey.pem;
    include         /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam     /etc/letsencrypt/ssl-dhparams.pem;
}

관련 정보