동일한 VirtualHost에 대해 여러 포트 선언


35

동일한 VirtualHost에 대해 여러 포트를 선언하십시오.

SSLStrictSNIVHostCheck off
# Apache setup which will listen for and accept SSL connections on port 443.
Listen 443
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:443

<VirtualHost *:443>
  ServerName domain.localhost
  DocumentRoot "/Users/<my_user_name>/Sites/domain/public"
  <Directory "/Users/<my_user_name>/Sites/domain/public">
    Order allow,deny
    Allow from all
  </Directory>

  # SSL Configuration
  SSLEngine on
  ...
</VirtualHost>

'domain.localhost'에 대해 새 포트 ( 'listen', ServerName, ...)를 선언하려면 어떻게해야합니까?

다음 코드를 추가하면 아파치가 'domain.localhost'의 다른 모든 하위 도메인 (subdomain1.domain.localhost, subdomain2.domain.localhost, ...)에도 너무 많이 작동합니다.

<VirtualHost *:80>
  ServerName pjtmain.localhost:80
  DocumentRoot "/Users/Toto85/Sites/pjtmain/public"
  RackEnv development
  <Directory "/Users/Toto85/Sites/pjtmain/public">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

3
참고로 https 및 비 https 가상 호스트를 하나로 결합 할 수 없습니다. <VirtualHost * : 80 * : 443>. 80 "SSLEngine을 켤 수 없습니다. SSL 및 비 SSL에 대해 2 개의 분리 된 VirtualHost 선언이 있어야합니다.
Gacek

답변:


63

문제는 다소 모호하지만 도움을 드리겠습니다.

동일한 가상 호스트가 여러 포트에서 청취하도록하려면 다음을 수행하십시오.

Listen 80
NameVirtualHost *:80

Listen 8080    
NameVirtualHost *:8080

<VirtualHost *:80 *:8080>
  ServerName some.domain.name
  ServerAlias some.other.domain.name
  ....
</VirtualHost>

일반적으로 다른 프로토콜을 사용하지 않는 한 동일한 도메인 이름의 여러 이름 기반 VirtualHost를 정의하지 않습니다.

SSL 이름 기반 가상 호스트의 경우주의해야합니다. 정의에 따라 동일한 IP : Port에 여러 개의 인증서가있을 수 없으므로 인증서 오류를 피하려면 제공된 모든 도메인 이름을 포괄하는 wilcard 인증서 여야합니다.


2
+1하지만 일부 작은 수정 : SSL 인증서가되어 있지 IP의 adresses에 있지만 동일해야합니다 일반적인 이름 (CN)에 연결 호스트 이름 . 또한 SNI 확장을 사용하면 동일한 IP 주소에 서로 다른 인증서를 가진 여러 가상 호스트를 가질 수 있습니다. ( en.wikipedia.org/wiki/Server_Name_Indication )
Daniel Rikowski

3
+1 역시 SSL의 경우 <VirtualHost * : 80 * : 443>
이어야합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.