nginx 두 사이트 구성 충돌

nginx 두 사이트 구성 충돌

내 도메인 중 하나에 nginx를 구성했습니다. Wildfly 애플리케이션 서버의 프런트엔드로 작동합니다. 어느 날 나는 같은 컴퓨터에 베타 테스트 환경을 구성하기로 결정했습니다. 그래서 구성에 다른 하위 도메인을 추가했습니다. 다시 시작한 후 nginx는 첫 번째 애플리케이션을 제공하기 위해 중지되었습니다. 내 구성 파일은 다음과 같습니다

주요 하위 도메인:

server {
    listen 80;
    server_name sub.example.com;
    return 301 https://$host$request_uri;
}

server {

    listen 443;
    server_name sub.example.com;

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

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/sub.example.com.access.log;

    location / {

      proxy_set_header        Host $host;
      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;

      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;
    }
}

테스트 하위 도메인:

server {
    listen 443;
    server_name sub-test.example.com;
    return 301 http://$host$request_uri;
}

server {

    listen 80;
    server_name sub-test.example.com;


    access_log            /var/log/nginx/sub-test.example.com.access.log;

    location / {

      proxy_set_header        Host $host;
      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;

      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;

    }
}

위의 모든 구성은 단독으로 작동할 때 예상대로 작동한다는 점을 추가해야 합니다. 하지만 함께 그들은 서로를 좋아하지 않습니다. 첫 번째 항목을 요청하면 NOT FOUND HTTP 상태가 반환됩니다.

물론 내 Wildfly 서버에 문제가 있을 수 있습니다. 가상 호스트를 처리하도록 구성되어 있는데 실제로 괜찮은지 잘 모르겠습니다. 그러나 두 애플리케이션이 모두 실행되고 그 중 하나만 nginx에 의해 프록시되면 제대로 작동합니다.

도와 주셔서 감사합니다.

답변1

Patryk, 안타깝게도 이름 기반 HTTPS 서버를 두 개 이상 설정할 수 없습니다. 설명이 길지만 확인해보세요여기몇 가지 심층 정보 및 예제(아파치 기반, nginx에 대해 전혀 모릅니다)

답변2

둘 이상의 https 사이트를 사용할 수 있습니다.

이 기술을 SNI, 즉 서버 이름 표시라고 합니다.참조

서버 구성에서 SSL 부분을 이동하면 인증서 구성에 대한 부담도 줄어듭니다. 내 역방향 프록시에서는 다음 구조를 사용합니다.

sites.d/ | -ssl.conf | -vhost1.conf | -vhost2.conf

ssl.conf에는 다음이 포함됩니다.

ssl_certificate /etc/ssl/certs/ssl.crt; ssl_certificate_key /etc/ssl/certs/server.key;

또 다른 옵션은 서로 다른 공통 이름을 가진 별도의 인증서를 사용하는 것입니다.

관련 정보