동일한 서버의 여러 도메인에 대해 httpd 구성

동일한 서버의 여러 도메인에 대해 httpd 구성

CentOS 7 웹 서버는 mydomain.com이라는 공개 도메인을 호스팅합니다. 동일한 서버에는 승인된/인증된 개인 사용자만 사용할 수 있는 두 개의 애플리케이션을 호스팅하는 별도의 VPN도 있습니다. httpd는 tomcat 앞에 역방향 프록시 관계를 설정합니다. 아래 구성을 사용하면 모든 것이 완벽하게 실행됩니다.

서버가 공개적으로 다른 도메인인 domain2.com, domain3.com 및 domain4.com을 호스팅할 수 있도록 아래 구성을 어떻게 변경합니까? Tomcat 인스턴스는 3개입니다. 포트 8011은 공용 사이트의 Tomcat 인스턴스를 가리키고, 포트 8009 및 8010은 개인 VPN 애플리케이션의 Tomcat 인스턴스를 가리킵니다.

/etc/httpd/conf.d/hostname.conf다음은 포함 파일로 표시된 코드입니다 /etc/httpd/conf/httpd.conf.

<VirtualHost *:443>
    ServerName www.bogusdomainforvpn.com
    ServerAlias bogusdomainforvpn.com
    ErrorLog /var/log/httpd/bogusdomainforvpn_com_error.log
    CustomLog /var/log/httpd/bogusdomainforvpn_com_requests.log combined
    SSLEngine on
    SSLProxyEngine on
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    ProxyPass / ajp://ip.address.of.server:8009/
    ProxyPassReverse / ajp://ip.address.of.server:8009/
</VirtualHost>

Listen 444

<VirtualHost *:444>
    ServerName www.bogusdomainforvpn.com
    ServerAlias bogusdomainforvpn.com
    ErrorLog /var/log/httpd/bogusdomainforvpn_com_error.log
    CustomLog /var/log/httpd/bogusdomainforvpn_com_requests.log combined
    SSLEngine on
    SSLProxyEngine on
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    ProxyPass / ajp://ip.address.of.server:8010/
    ProxyPassReverse / ajp://ip.address.of.server:8010/
</VirtualHost>

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    ErrorLog /var/log/httpd/mydomain_com_error.log
    CustomLog /var/log/httpd/mydomain_com_requests.log combined
    ProxyPass / ajp://ip.address.of.server:8011/
    ProxyPassReverse / ajp://ip.address.of.server:8011/
</VirtualHost>

답변1

VirtualHostSSL/TLS를 사용하지 않는 경우 각 웹사이트에 추가하세요.

<VirtualHost www.domain2.com:80>
    ServerName www.domain2.com
    ErrorLog /var/log/httpd/domain2_com_error.log
    CustomLog /var/log/httpd/domain2_com_requests.log combined
    # You probably want either the next line:
    DocumentRoot /var/www/domain2.com
    # or the next two lines: (but not all three)
    # ProxyPass / ajp://ip.address.of.server:8012/
    # ProxyPassReverse / ajp://ip.address.of.server:8012/
</VirtualHost>

# You only need this block if DocumentRoot is used above:
<Directory /var/www/domain2.com>
    # this enables full control using .htaccess - change for your setup
    AllowOverride All
</Directory>

<Directory>CentOS는 기본 루트 디렉토리 외부의 모든 항목에 대한 액세스를 제한하기 때문에 이 항목이 필요할 수 있습니다 /var/www/html. 필요에 맞게 편집하세요.

이 섹션과의 유일한 차이점은 에이전트 항목을 파일이 저장된 디렉터리를 가리키는 항목으로 VirtualHost바꾸는 것입니다 . DocumentRoot나는 당신이 로컬 아파치 서버에서 페이지를 제공하고 있다고 가정합니다. 원래 사이트에서 Tomcat을 사용하는 경우 www.mydomain.com(적절하게 편집된) ProxyPass및 행을 유지하고 항목이나 섹션을 ProxyPassReverse추가하지 마십시오 .DocumentRoot<Directory>

SSL/TLS 사이트의 경우 비슷한 설정이 필요하지만 포트를 443으로 변경하고 인증서 관련 항목을 변경합니다.

<VirtualHost www.domain2.com:443>
    ServerName www.domain2.com
    SSLEngine on
    SSLProxyEngine on
    SSLCertificateFile /etc/pki/tls/certs/domain2.crt
    SSLCertificateKeyFile /etc/pki/tls/private/domain2.key
    ErrorLog /var/log/httpd/domain2_com_error.log
    CustomLog /var/log/httpd/domain2_com_requests.log combined
    DocumentRoot /var/www/domain2.com
</VirtualHost>

SSL/TLS를 사용하는 이 가상 명명된 호스팅은 다음에 의존합니다.서버 이름 표시. 이전 버전에서는 SNI를 지원하지 않으므로 이 기능을 사용하려면 사용자에게 Vista에서 Internet Explorer 7 이상이 필요합니다. Linux에서는 지난 10년 초반의 아주 오래된 브라우저를 사용하지 않는 한 꽤 안전합니다.

유일한 문제는 bogusdomainforvpn.com포트 443이 이미 사용 중이라는 것입니다. 이는 SSL/TLS 연결에 대한 기본 첫 번째 일치가 되기 때문에 SNI를 지원하지 않는 클라이언트가 구성한 SNI 사이트 수에 연결을 시도하는 경우 대체 사이트로 사용됩니다. 이러한 일이 발생하지 않도록 하려면 이 가상 호스트 앞에 다른 가상 호스트를 생성하여 SNI가 아닌 클라이언트에 대한 대체 사이트로 사용하세요.

답변2

이는 HTTPS 사이트에서는 작동하지 않지만 역방향 프록시를 고려하지 않고 단순히 호스팅하는 경우 httpd.conf에는 다음 중 3개만 더 포함해야 합니다.엑스모든 수정:

<VirtualHost *:80>
  ServerName www.domainX.com
  ServerAlias domainX.com
  DocumentRoot /var/www/vhosts/domainX
  ErrorLog /var/log/httpd/domainX_com_error.log
  CustomLog /var/log/httpd/domainX_com_requests.log combined
</VirtualHost>

/etc/httpd/conf.d/를 개별적으로 입력할 수 있습니다.CPU 이름.conf 원하는 경우 conf가 마스터에 포함되어 있는 한 모두 하나의 큰 conf처럼 작동하므로 필요하지 않습니다.

관련 정보