Як відключити корінь документа за замовчуванням у Apache?


13

Я розміщую деякі веб-сайти на своєму сервері під управлінням Apache Httpd. Кожен веб-сайт має власний домен або субдомен та віртуальний хост. Тому мені не потрібен корінь документа за замовчуванням. Чи можна відключити DocumentRootв /etc/httpd/conf/httpd.conf?

Відповіді:


10

Дякую за інші відповіді. Я вирішив це, додавши віртуальний хост за замовчуванням без дозволів. Глобальні 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>

Таким чином, я отримую 403 Заборонене повідомлення, коли доступ до сервера - це ip безпосередньо, саме це я хотів. Було б навіть краще, якби мені не знадобився /var/www/htmlіснуючий каталог для цього, але Apache скаржиться, якщо я вкажу щось на зразок /dev/null.


6

Я не впевнений, що ти хочеш це зробити. Якщо в конфігурації apache немає vhost за замовчуванням, перший визначений vhost стає типовим .

Все, що вам потрібно зробити, - це мати за замовчуванням порожню сторінку.


6

Так і ні.

Ви можете коментувати або видаляти DocumentRootдирективу, без проблем. Але це не дуже досягає, тому що тоді він буде за замовчуванням до каталогу за замовчуванням, PREFIX/htdocs/де PREFIX встановлюється під час створення апаша.

Коли у вас VirtualHosts налаштовано всі запити, які не обробляються явно налаштованим віртуальним хостом, обробляються за замовчуванням virtualhost (який, як правило, перший, але httpd -Sскаже вам).


1

Будь-який файл конфігурації Apache з розширенням, .confрозташованим всередині, /etc/httpd/conf.d/буде включений до складу конфігурації Apache. Таким чином, щоб відключити конфігурацію сторінки "Ласкаво просимо", нам потрібно перейменувати її конфігурацію/etc/httpd/conf.d/welcome.conf:

Крок один переїзд за замовчуванням привітальний файл

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

Крок другої перезавантаження служби Appache2

sudo systemctl restart httpd

0

У вашому /etc/httpd/conf/httpd.conf, якщо ваша Директива про слухання

Listen 80

Це означає

*:80

Ви вказали пару <listener>+ <servename>у ваших /etc/httpd/conf/httpd.conf та /etc/httpd/conf.d/default.conf, які однакові: *: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-адреси. Використання підстановки (*) для IP-адреси у всіх директивах VirtualHost робить це відображення на основі IP-адрес неважливим.

Коли надходить запит, сервер знайде найкращий (найбільш конкретний) аргумент відповідності на основі IP-адреси та порту, використовуваних запитом. Якщо існує більше одного віртуального хоста, що містить цю адресу найкращої відповідності та комбінацію портів, Apache додатково порівняє директиви ServerName та ServerAlias ​​з іменем сервера, наявним у запиті.

Якщо ви опустите директиву ServerName з будь-якого віртуального хоста на основі імен, сервер за замовчуванням отримає повноцінне доменне ім'я (FQDN), похідне від імені системного хоста. Це неявно встановлене ім’я сервера може призвести до контр-інтуїтивно зрозумілого віртуального хоста і не рекомендується.

Типовий vhost на основі імені для комбінації IP та портів Якщо в наборі віртуальних хостів, що містять найбільш конкретну відповідну IP-адресу та комбінацію портів, не знайдено відповідного ServerName або ServerAlias, то перший перелічений віртуальний хост, який відповідає, який буде використаний.


0

Просто змініть порт за замовчуванням на:

Listen 80
Listen 8080 # any fake port

і залиште * .80 у VirtualHost

Для мене працює з Apache2 та Centos 7

Більше прикладів ви можете знайти в документації . Погляньте на змінну _default_.


0

Щоб вимкнути цю сторінку, нам потрібно перейменувати файл /etc/httpd/conf.d/welcome.conf у щось інше, або ви можете просто видалити його, якщо він вам не потрібен.

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

Переконайтеся, що Apache перезапущено (як root) командою:

systemctl перезавантажте httpd

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.