답변:
다른 답변에 감사드립니다. 권한없이 기본 가상 호스트를 추가하여 해결했습니다. 전역 DocumentRoot
및 ServerName
옵션은 가상 호스트에 지정된 것과 일치해야합니다.
/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
대신 비슷한 것을 지정하면 불평합니다 .
예, 아니오
DocumentRoot
지시문을 주석 처리하거나 제거해 도 문제 없습니다. 그러나 PREFIX/htdocs/
아파치를 빌드 할 때 PREFIX가 설정되는 기본 디렉토리 로 기본 설정되기 때문에 그다지 큰 성과를 내지 못합니다 .
VirtualHosts를 설정하면 명시 적으로 구성된 가상 호스트에서 처리하지 않는 모든 요청이 기본 가상 호스트 (일반적으로 첫 번째이지만 httpd -S
알려줍니다)에 의해 처리됩니다 .
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가 없으면 사용되는 일치하는 첫 번째 가상 호스트가 표시됩니다.
기본 포트를 다음과 같이 변경하십시오.
Listen 80
Listen 8080 # any fake port
VirtualHost에 * .80을 남겨 두십시오.
Apache2 및 Centos 7에서 작동합니다.
더 많은 예제는 documentation 에서 찾을 수 있습니다 . _default_ 변수를 살펴보십시오.