Apache에서 기본 문서 루트를 비활성화하는 방법은 무엇입니까?


13

Apache Httpd를 실행하는 서버에서 일부 웹 사이트를 호스팅합니다. 각 웹 사이트에는 자체 도메인 또는 하위 도메인 및 가상 호스트가 있습니다. 따라서 기본 문서 루트가 필요하지 않습니다. 그것은 비활성화 할 수 DocumentRoot있는 /etc/httpd/conf/httpd.conf?

답변:


10

다른 답변에 감사드립니다. 권한없이 기본 가상 호스트를 추가하여 해결했습니다. 전역 DocumentRootServerName옵션은 가상 호스트에 지정된 것과 일치해야합니다.

/etc/httpd/conf/httpd.conf

...
ServerName <server-ip>:80

DocumentRoot "/var/www/html"

<Directory />
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>
...

/etc/httpd/conf.d/default.conf

<VirtualHost *:80>
        ServerName <server-ip>
        DocumentRoot /var/www/html
</VirtualHost>

이렇게하면 서버가 직접 IP에 의해 액세스 될 때 403 Forbidden 메시지가 표시됩니다. 정확히 내가 원하는 것입니다. /var/www/html기존 디렉토리 가 필요하지 않으면 더 좋을 것 입니다. 그러나 Apache는 /dev/null대신 비슷한 것을 지정하면 불평합니다 .


6

나는 당신이 그렇게하고 싶어하지 않습니다. 아파치 설정에 기본 가상 호스트가 없다면 첫 번째로 정의 된 가상 호스트가 기본값이 됩니다.

기본적으로 빈 페이지를 제공하기 만하면됩니다.


6

예, 아니오

DocumentRoot지시문을 주석 처리하거나 제거해 도 문제 없습니다. 그러나 PREFIX/htdocs/아파치를 빌드 할 때 PREFIX가 설정되는 기본 디렉토리 로 기본 설정되기 때문에 그다지 큰 성과를 내지 못합니다 .

VirtualHosts를 설정하면 명시 적으로 구성된 가상 호스트에서 처리하지 않는 모든 요청이 기본 가상 호스트 (일반적으로 첫 번째이지만 httpd -S알려줍니다)에 의해 처리됩니다 .


1

확장자가 .conf있는 Apache 구성 파일 /etc/httpd/conf.d/은 Apache 구성의 일부로 포함됩니다. 따라서 기본 "환영"페이지 구성을 비활성화하려면 구성 이름을 바꿔야합니다./etc/httpd/conf.d/welcome.conf:

1 단계 기본 환영 파일 이동 :

sudo mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.backup 

2 단계 재부팅 Appache2 서비스

sudo systemctl restart httpd

0

Listen 지시문이 다음과 같은 경우 /etc/httpd/conf/httpd.conf에서

Listen 80

그랬어

*:80

/etc/httpd/conf/httpd.conf 및 /etc/httpd/conf.d/default.conf에 <listener>+ <servename>를 몇 개 정의했습니다 : *:80+ <server-ip>. 따라서 Apache는 하나만 고려합니다.

따라서 vhost 설정은 사용되지 않습니다.

/etc/httpd/conf/httpd.conf는 / var / www / html 디렉토리에 대한 액세스를 차단하기에 충분합니다.

간단히 추가하십시오 :

<Directory /var/www/html>
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>

https://httpd.apache.org/docs/2.4/en/vhosts/name-based.html#alg를 읽어보십시오 .

서버가 올바른 이름 기반 가상 호스트를 선택하는 방법

이름 기반 가상 호스트 확인의 첫 번째 단계는 IP 기반 확인이라는 점을 인식해야합니다. 이름 기반 가상 호스트 확인은 후보를 최상의 IP 기반 일치로 좁힌 후에 가장 적합한 이름 기반 가상 호스트 만 선택합니다. 모든 VirtualHost 지시문에서 IP 주소에 와일드 카드 (*)를 사용하면이 IP 기반 매핑이 적합하지 않습니다.

요청이 도착하면 서버는 요청에 사용 된 IP 주소와 포트를 기반으로 가장 일치하는 인수를 찾습니다. 이 가장 일치하는 주소와 포트 조합을 포함하는 가상 호스트가 둘 이상 있으면 Apache는 ServerName 및 ServerAlias ​​지시문을 요청에있는 서버 이름과 비교합니다.

이름 기반 가상 호스트에서 ServerName 지시문을 생략하면 서버는 기본적으로 시스템 호스트 이름에서 파생 된 FQDN (정규화 된 도메인 이름)으로 설정됩니다. 이 암시 적으로 설정된 서버 이름은 직관적이지 않은 가상 호스트 일치를 유발할 수 있으므로 권장하지 않습니다.

IP 및 포트 조합에 대한 기본 이름 기반 가상 호스트 일치하는 특정 IP 주소 및 포트 조합을 포함하는 가상 호스트 세트에 일치하는 ServerName 또는 ServerAlias가 없으면 사용되는 일치하는 첫 번째 가상 호스트가 표시됩니다.


0

기본 포트를 다음과 같이 변경하십시오.

Listen 80
Listen 8080 # any fake port

VirtualHost에 * .80을 남겨 두십시오.

Apache2 및 Centos 7에서 작동합니다.

더 많은 예제는 documentation 에서 찾을 수 있습니다 . _default_ 변수를 살펴보십시오.


0

이 페이지를 비활성화하려면 /etc/httpd/conf.d/welcome.conf 파일의 이름을 다른 것으로 바꾸거나 필요하지 않은 경우 간단히 삭제할 수 있습니다.

mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf_backup

다음 명령을 사용하여 Apache가 루트로 다시 시작되었는지 확인하십시오.

systemctl restart httpd

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.