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
VirtualHost
SSL/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처럼 작동하므로 필요하지 않습니다.