¿Cómo deshabilitar la raíz del documento predeterminado en Apache?

13

Alojo algunos sitios web en mi servidor que ejecutan Apache Httpd. Cada sitio web tiene su propio dominio o subdominio y host virtual. Por lo tanto, no necesito una raíz de documento predeterminada. ¿Es posible desactivar DocumentRooten /etc/httpd/conf/httpd.conf?

danijar
fuente

Respuestas:

10

Gracias por las otras respuestas. Lo resolví agregando un host virtual predeterminado sin ningún permiso. Las opciones globales DocumentRooty ServerNamedeben 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/htmlun directorio existente para eso, pero Apache se queja si en lugar de eso especifico algo así /dev/null.

danijar
fuente
6

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.

usuario9517
fuente
6

Si y no.

Puede comentar o eliminar la DocumentRootdirectiva, 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 -Sse lo indicaremos ).

HBruijn
fuente
1

Cualquier archivo de configuración de Apache con extensión .confubicada 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
Usman Ali Maan
fuente
0

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.

Jordan LE NUFF
fuente
0

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_.

Vasin Yuriy
fuente
0

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

Sukhjinder Singh
fuente