LINUX.ORG.RU

Apache. Запретить вход на сайт по IP

 


1

2

Зашёл на свою vds по ip (не по доменному имени), а у меня вместо страницы-заглушки загрузился один из сайтов. Непорядок! Использую apache, сайты настроены как виртуальные хосты. Что я не так в нём настроил?

★★★★★

сделай vhost для IP c заглушкой

Ford_Focus ★★★★★
()

у меня вместо страницы-заглушки загрузился один из сайтов

Покажи все секции конфига VirtualHost. Сдаётся мне у тебя дефолтный виртуалхост ведет на этот самый «один из сайтов»

Pinkbyte ★★★★★
()

Доделай /etc/apache2/sites-available/000-default.conf на заглушку. Например:

<VirtualHost *:80>
ServerName 54.68.30.231
ServerAlias www.54.68.30.231
DocumentRoot "/var/www/54.68.30.231"
<Directory "/var/www/54.68.30.231">
allow from all
Options +Indexes
AllowOverride all
</Directory>
</VirtualHost>
cat /var/www/54.68.30.231/index.html
<p><span style=" font-family:'Times New Roman'; font-size:27pt;">It works!</span></p>

mandala ★★★★★
()
Ответ на: комментарий от Pinkbyte

Скорее всего на тот кидает, который первый в алфавитном порядке.

mandala ★★★★★
()
Последнее исправление: mandala (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Ну какие у меня реально виртуальные хосты не покажу, но в изменённом виде так:

<VirtualHost *:80>
   ServerName site1.info
   DocumentRoot "/var/www/site1.info/html"
   DirectoryIndex index.html index.htm index.php
   ErrorLog "/var/www/site1.info/error.log"
   CustomLog "/var/www/site1.info/access.log" common
   <Directory "/var/www/site1.info/html">
      AllowOverride All
      Options -Indexes
   </Directory>
</VirtualHost>

<VirtualHost *:80>
   ServerName site2.info
   DocumentRoot "/var/www/site2.info/html"
   DirectoryIndex index.html index.htm index.php
   ErrorLog "/var/www/site2.info/error.log"
   CustomLog "/var/www/site2.info/access.log" common
   <Directory "/var/www/site2.info/html">
      AllowOverride All
      Options -Indexes
   </Directory>
</VirtualHost>

<VirtualHost *:80>
   ServerName site3.info
   DocumentRoot "/var/www/site3.info/html"
   DirectoryIndex index.html index.htm index.php
   ErrorLog "/var/www/site3.info/error.log"
   CustomLog "/var/www/site3.info/access.log" common
   <Directory "/var/www/site3.info/html">
      AllowOverride All
      Options -Indexes
   </Directory>
</VirtualHost>

sunny1983 ★★★★★
() автор топика

Я подумал, ведь если идёт запрос не по доменному имени, а по ip-адресу, то запрос не будет содержать заголовков HOST. Может как-нибудь фильтрацию по заголовкам сделать?

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

Я подумал, ведь если идёт запрос не по доменному имени, а по ip-адресу, то запрос не будет содержать заголовков HOST. Может как-нибудь фильтрацию по заголовкам сделать?

ServerName и есть такая фильтрация

kwinto
()
Ответ на: комментарий от kwinto

А откуда им там появиться? Заголовки же клиентская сторона формирует.
Вот mandala говорит, что апач кидает запрос тому виртуальному хосту, чьё имя первое по алфавиту, я кстати тоже обнаружил такую закономерность.

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

что апач кидает запрос тому виртуальному хосту, чьё имя первое по алфавиту,

Да, именно так. Я, кстати, не нашел ни где сходу, где это задокументировано. Быстрее сам методом тыка определил. (и понял почему стандартная заглушка имеет имя 000-default.conf).

mandala ★★★★★
()
Последнее исправление: mandala (всего исправлений: 1)
Ответ на: комментарий от sunny1983

Может как-нибудь фильтрацию по заголовкам сделать?

Запрет доступа к серверу при обращении по ip

Ага, ага, купить и поставить перед сервером juniper и настроить в нём фильтрацию трафика на основе DPI.

Ну и можно обойтись редиректом без включения заглушки на /etc/apache2/sites-enabled/000-default.conf

https://www.digitalocean.com/community/questions/redirect-ip-address-to-domai...

.htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^12\.34\.56\.789$
RewriteRule ^(.*)$ http://www.domainname.com/$1 [L,R=301]
mandala ★★★★★
()
Последнее исправление: mandala (всего исправлений: 1)
Ответ на: комментарий от mandala

и понял почему стандартная заглушка имеет имя 000-default.conf

Это видимо в сборке для Debian или Ubuntu. У меня в CentOS такого файла нет.
То есть апач выдаёт страницу того виртхоста, на какую указывает содержимое заголовка HOST в клиентском запросе, а если оного нет, то выдаёт первую страницу по алфавиту? А для чего тогда директива DocumentRoot, которая находится вне секций виртуальных хостов, мне казалось именно она и должна указывать на заглушку.

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

Вот нащел доков маленько https://httpd.apache.org/docs/2.4/mod/core.html#documentroot

Ну получается все верно: ищет в директории, первый по алфавиту видит и открывает его. И плюс дистроспецифичная фигня в определении дефолта, как я понимаю.

А для чего тогда директива DocumentRoot, которая находится вне секций виртуальных хостов, мне казалось именно она и должна указывать на заглушку.

У меня на каждый вирт.хост свой конфиг, так сразу и настраивал. Видел примеры «все портянкой», но не понял что это :). Я сам не разбираюсь, вот что знаю — ответил, как в этом треде.

mandala ★★★★★
()
Последнее исправление: mandala (всего исправлений: 1)

Ждём, когда в тред въедет кто-нибудь кто занимается хостингом профессионально и ответит как более правильно: через 000-default.conf, через RewriteRule или есть какой более простой бескостыльный способ.

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

Виртуальный хост по алфавиту выбирается потому, что ни один ServerName не подошел. А про хост, ну открой уже любой айпи в браузере и посмотри, что твой клиент шлет в качестве Host.

kwinto
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.