Come disabilitare la radice del documento predefinita in Apache?


13

Ospito alcuni siti Web sul mio server che esegue Apache Httpd. Ogni sito Web ha il proprio dominio o sottodominio e host virtuale. Pertanto, non ho bisogno di una radice del documento predefinita. È possibile disabilitare DocumentRootin /etc/httpd/conf/httpd.conf?

Risposte:


10

Grazie per le altre risposte. L'ho risolto aggiungendo un host virtuale predefinito senza alcuna autorizzazione. Il globale DocumentRoote le ServerNameopzioni devono corrispondere a quelli specificati nell'host virtuale.

/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>

In questo modo, ricevo un messaggio 403 Proibito quando si accede direttamente al server dal suo ip, che è esattamente quello che volevo. Sarebbe ancora meglio se non avessi bisogno di /var/www/htmluna directory esistente per questo, ma Apache si lamenta se /dev/nullinvece specifico qualcosa del genere .


6

Non sono sicuro che tu voglia farlo. Se non esiste un vhost predefinito in una configurazione di apache, il primo vhost definito diventa quello predefinito .

Tutto quello che devi fare è avere la pagina predefinita come servizio vuoto.


6

Sì e no.

Puoi commentare o rimuovere la DocumentRootdirettiva, nessun problema. Ma questo non ottiene molto, perché allora verrà automaticamente PREFIX/htdocs/impostata la directory predefinita in cui PREFIX è impostato quando si crea apache.

Quando hai VirtualHosts impostato tutte le richieste che non sono gestite da un host virtuale configurato in modo esplicito vengono gestite dall'host virtuale predefinito (che in genere è il primo, ma te httpd -Slo dirà).


1

Qualsiasi file di configurazione di Apache con estensione .confall'interno /etc/httpd/conf.d/sarà incluso come parte della configurazione di Apache. Pertanto, per disabilitare la configurazione predefinita della pagina "Benvenuti", è necessario rinominarla/etc/httpd/conf.d/welcome.conf:

Passo uno spostare il file di benvenuto predefinito:

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

Passaggio 2: riavviare il servizio Appache2

sudo systemctl restart httpd

0

Nel tuo /etc/httpd/conf/httpd.conf, se la tua direttiva Listen è

Listen 80

Questo è cattivo

*:80

Hai definito una coppia <listener>+ <servename>in /etc/httpd/conf/httpd.conf e /etc/httpd/conf.d/default.conf che sono uguali: *:80+ <server-ip>. Quindi, Apache ne tiene conto solo di uno.

Quindi, la configurazione del tuo vhost è inutile.

Il tuo /etc/httpd/conf/httpd.conf è sufficiente per bloccare l'accesso alla tua directory / var / www / html.

Aggiungi semplicemente:

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

Si prega di leggere a https://httpd.apache.org/docs/2.4/en/vhosts/name-based.html#alg :

Come il server seleziona l'host virtuale basato sul nome corretto

È importante riconoscere che il primo passo nella risoluzione dell'host virtuale basato sul nome è la risoluzione basata su IP. La risoluzione host virtuale basata sul nome sceglie l'host virtuale basato sul nome più appropriato solo dopo aver ristretto i candidati alla migliore corrispondenza basata su IP. L'uso di un carattere jolly (*) per l'indirizzo IP in tutte le direttive VirtualHost rende irrilevante questa mappatura basata su IP.

Quando arriva una richiesta, il server troverà l'argomento di corrispondenza migliore (più specifico) in base all'indirizzo IP e alla porta utilizzati dalla richiesta. Se esiste più di un host virtuale contenente questa combinazione di indirizzo e porta con la migliore corrispondenza, Apache confronterà ulteriormente le direttive ServerName e ServerAlias ​​con il nome del server presente nella richiesta.

Se si omette la direttiva ServerName da qualsiasi host virtuale basato su nome, il server passerà automaticamente a un nome di dominio completo (FQDN) derivato dal nome host di sistema. Questo nome del server impostato in modo implicito può portare a una corrispondenza host virtuale non intuitiva ed è scoraggiato.

Il vhost predefinito basato sul nome per una combinazione di porta e IP Se non viene trovato ServerName o ServerAlias ​​corrispondenti nel set di host virtuali che contengono la combinazione di porta e indirizzo IP corrispondente più specifica, quindi il primo host virtuale elencato che corrisponde a quello che verrà utilizzato.


0

Cambia la porta predefinita in:

Listen 80
Listen 8080 # any fake port

e lascia * .80 in VirtualHost

Funziona per me con Apache2 e Centos 7

Altri esempi che puoi trovare nella documentazione . Dai un'occhiata alla variabile _default_.


0

Per disabilitare questa pagina, dobbiamo rinominare il file /etc/httpd/conf.d/welcome.conf in qualcos'altro o puoi semplicemente cancellarlo se non ti serve.

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

Assicurati che Apache sia riavviato (come root) con il comando:

systemctl restart httpd

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.