Відповіді:
Дякую за інші відповіді. Я вирішив це, додавши віртуальний хост за замовчуванням без дозволів. Глобальні 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
.
Так і ні.
Ви можете коментувати або видаляти DocumentRoot
директиву, без проблем. Але це не дуже досягає, тому що тоді він буде за замовчуванням до каталогу за замовчуванням, PREFIX/htdocs/
де PREFIX встановлюється під час створення апаша.
Коли у вас VirtualHosts налаштовано всі запити, які не обробляються явно налаштованим віртуальним хостом, обробляються за замовчуванням virtualhost (який, як правило, перший, але httpd -S
скаже вам).
Будь-який файл конфігурації 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
У вашому /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, то перший перелічений віртуальний хост, який відповідає, який буде використаний.
Просто змініть порт за замовчуванням на:
Listen 80
Listen 8080 # any fake port
і залиште * .80 у VirtualHost
Для мене працює з Apache2 та Centos 7
Більше прикладів ви можете знайти в документації . Погляньте на змінну _default_.
Щоб вимкнути цю сторінку, нам потрібно перейменувати файл /etc/httpd/conf.d/welcome.conf у щось інше, або ви можете просто видалити його, якщо він вам не потрібен.
mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf_backup
Переконайтеся, що Apache перезапущено (як root) командою:
systemctl перезавантажте httpd