Apache conf의 동일한 VirtualHost에서 HTTP 및 HTTPS를 정의 할 수 있습니까?


13

사이트가 HTTPS를 통해 실행되도록 복제하지 않으려는 상당히 큰 VirtualHost 정의가 있습니다.

내가하고 싶은 일은 다음과 같습니다.

<VirtualHost *>
    ServerName example.com

    <If port=443>
        SSLEngine on
        SSLCertificateFile ...
        SSLCertificateKeyFile ...
        SSLCertificateChainFile ...
    </If>

    (other config)

</VirtualHost>

이것을 할 수있는 방법이 있습니까?
구성을 복제하지 않는 다른 방법이 누락 되었습니까?

답변:


12

현재 안정적인 Apache (2.2) 버전에는 해당 기능이 없지만 2.4에는 IF 지시문이 있습니다.

지금은 두 개의 VirtualHost를 만들어야하지만 환경이나 아파치 전역 변수를 통해 몇 가지 항목을 설정하고 virtualhost 구성에서 사용할 수 있습니다 (예 : documentroot 설정). 이 방법을 사용하면 한 줄의 수정만으로 변경할 수 있습니다.

물론 include를 사용하여 다음과 같은 작업을 수행 할 수 있습니다.

<VirtualHost *:80>
        include /etc/apache2/vhost.conf.d/site1
</VirtualHost>

<VirtualHost *:443>
        include /etc/apache2/vhost.conf.d/site1
        include /etc/apache2/vhost.conf.d/site1-ssl
</VirtualHost>

추신 : SNI는 주류가 될 것이다 는 IPv6 적응하기 전에. 모든 주류 브라우저는 지원되는 OS를 사용한다고 가정하고 이미 지원합니다.

편집 : fooquency가 발견했을 때 SSLEngine을 If 블록에 넣을 수 없으므로 내 대답이 잘못되었습니다.


8
넣어 시도 SSLEngine On<If>줄 것이다 SSLEngine not allowed here이 답변의 시작에 제안 된 사용 사례가 슬프게 할 수 표시되지 않도록. "디렉토리 컨텍스트를 지원하는 지시문 만이 구성 섹션에서 사용할 수 있습니다"라는 요구 사항 때문인 것 같습니다. (REF)SSLEngineserver config, virtual host (REF) 가 아닌 디렉토리.
fooquency

3

아닙니다. 대부분의 것을 Global config로 옮기고 VirtualHost에서 상속 할 수 있습니다.


1
불행히도 나는 각각 다른 구성을 가지며 HTTP 및 HTTPS를 통해 작업 해야하는 VirtualHost가 몇 가지 있습니다.
Jake

1
이 답변만큼 도움이되지 않는 유일한 대답입니다. 빨지 않는 웹 서버로 이동하십시오. :)
intgr


2

SSL 가상 호스트의 경우 두 번째 포트를 사용해야합니다.

<VirtualHost *:443>
    ServerName abc.com
</VirtualHost>
<VirtualHost *:4443>
    Servername def.com
</VirtualHost>

또는 별도의 IP를 사용해야합니다

<VirtualHost 192.168.0.1:443>
    ServerName abc.com
</VirtualHost>
<VirtualHost 192.168.0.2:443>
    Servername def.com
</VirtualHost>

Apache SSL 문서 http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html 에는 실제로 매우 좋은 설명이 있습니다 .

"이름 기반 / 비 IP 기반 가상 호스트에서 SSL을 사용할 수없는 이유는 무엇입니까?"


2
:하지만, 미래에 대한이 알고 있어야 en.wikipedia.org/wiki/Server_Name_Indication
mattdm

아이러니하게도, SNI가 대다수의 가상 호스팅 사이트에 안전하게 사용될 수있을 정도로 널리 받아 들여질 때까지는 IPv6가 관련성이 없어 질 정도로 평범 할 것입니다.
jgoldschrafe

4
@jgoldschrafe 2010 년 안녕하세요, 미래의 연설입니다! 최근 Caniuse 는 비 SNI 브라우저가 전 세계적으로 2 % 미만 임을 보여줍니다. 첫 세계에서 아마 훨씬 훨씬 적습니다. IPv4는 여전히 살아 있고 잘 :)
kubanczyk

2
@kubanczyk 도착했습니다! :)
jgoldschrafe

@jgoldschrafe IPv6을 사용하더라도 IP는 주로 라우팅 용이며 관리가 더 쉽기 때문에 단일 머신에 주소 블록을 할당하는 것보다 SNI를 우선합니다.
Bachsau
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.