Respuestas:
Gracias por las otras respuestas. Lo resolví agregando un host virtual predeterminado sin ningún permiso. Las opciones globales DocumentRoot
y ServerName
deben coincidir con las especificadas en el host virtual.
/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>
De esta manera, recibo un mensaje prohibido 403 cuando se accede al servidor por su IP directamente, que es exactamente lo que quería. Sería aún mejor si no necesitara /var/www/html
un directorio existente para eso, pero Apache se queja si en lugar de eso especifico algo así /dev/null
.
No estoy seguro de que quieras hacer eso. Si no hay un vhost predeterminado en una configuración de apache, el primer vhost definido se convierte en el predeterminado .
Todo lo que realmente necesita hacer es que la página predeterminada se publique en blanco.
Si y no.
Puede comentar o eliminar la DocumentRoot
directiva, no hay problema. Pero eso no logra mucho, porque entonces se establecerá de forma predeterminada en el directorio predeterminado PREFIX/htdocs/
donde PREFIX se establece cuando se genera Apache.
Cuando tiene VirtualHosts configurado, todas las solicitudes que no son manejadas por un host virtual configurado explícitamente son manejadas por el host virtual predeterminado (que generalmente es el primero, pero httpd -S
se lo indicaremos ).
Cualquier archivo de configuración de Apache con extensión .conf
ubicada dentro /etc/httpd/conf.d/
se incluirá como parte de la configuración de Apache. Por lo tanto, para deshabilitar la configuración de página predeterminada de "Bienvenida" necesitamos cambiar el nombre de su configuración/etc/httpd/conf.d/welcome.conf:
Paso uno: mover el archivo de bienvenida predeterminado:
sudo mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.backup
Paso segundo reiniciar el servicio Appache2
sudo systemctl restart httpd
En su /etc/httpd/conf/httpd.conf, si su directiva Listen es
Listen 80
Qué cruel
*:80
Ha definido un par <listener>
+ <servename>
en su /etc/httpd/conf/httpd.conf y /etc/httpd/conf.d/default.conf que son lo mismo: *:80
+ <server-ip>
. Entonces, Apache solo tiene uno en cuenta.
Entonces, su configuración de vhost es inútil.
Su /etc/httpd/conf/httpd.conf es suficiente para bloquear el acceso a su directorio / var / www / html.
Simplemente agregue:
<Directory /var/www/html>
Order Deny,Allow
Deny from all
Options None
AllowOverride None
</Directory>
Por favor, lea https://httpd.apache.org/docs/2.4/en/vhosts/name-based.html#alg :
Cómo selecciona el servidor el host virtual adecuado basado en el nombre
Es importante reconocer que el primer paso en la resolución de host virtual basado en nombre es la resolución basada en IP. La resolución de host virtual basada en nombre solo elige el host virtual basado en nombre más apropiado después de reducir los candidatos a la mejor coincidencia basada en IP. El uso de un comodín (*) para la dirección IP en todas las directivas de VirtualHost hace que esta asignación basada en IP sea irrelevante.
Cuando llega una solicitud, el servidor encontrará el mejor argumento de coincidencia (más específico) basado en la dirección IP y el puerto utilizado por la solicitud. Si hay más de un host virtual que contiene esta combinación de dirección y puerto de mejor coincidencia, Apache comparará aún más las directivas ServerName y ServerAlias con el nombre del servidor presente en la solicitud.
Si omite la directiva ServerName de cualquier host virtual basado en nombre, el servidor usará un nombre de dominio completo (FQDN) derivado del nombre de host del sistema. Este nombre de servidor establecido implícitamente puede conducir a una coincidencia de host virtual contra-intuitiva y se desaconseja.
El vhost basado en el nombre predeterminado para una combinación de IP y puerto Si no se encuentra ServerName o ServerAlias coincidentes en el conjunto de hosts virtuales que contienen la dirección IP y la combinación de puertos coincidentes más específicos, se utilizará el primer host virtual que coincida.
Simplemente cambie el puerto predeterminado a:
Listen 80
Listen 8080 # any fake port
y dejar * .80 en VirtualHost
Funciona para mí con Apache2 y Centos 7
Puedes encontrar más ejemplos en la documentación . Eche un vistazo a la variable _default_.
Para deshabilitar esta página, tenemos que cambiar el nombre del archivo /etc/httpd/conf.d/welcome.conf a otra cosa o simplemente puede eliminarlo si no lo necesita.
mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf_backup
Asegúrese de que Apache se reinicie (como root) con el comando:
systemctl reiniciar httpd