Обмежте Apache одним IP


13

У мене є сервер з купою IP-адрес, і я хочу лише слухати Apache на одній з них. Це не здається важкою справою, і я це робив один раз перед тим, але у мене цього разу є проблеми. По-перше, ось де я зараз перебуваю, наскільки я розумію:

Кожне місце Apache прослуховує порт 80, він слухає лише правильний IP.

/etc/apache2$ grep -R ":80" .
./sites-available/default:<VirtualHost 192.168.0.82:80>
./httpd.conf:<VirtualHost 192.168.0.82:80>
./ports.conf:NameVirtualHost 192.168.0.82:80
./sites-enabled/000-default:<VirtualHost 192.168.0.82:80>

Прослуховування на 0.0.0.0 не згадується.

/etc/apache2$ grep -R "0\.0\.0\.0" .

І все ж ... Apache відмовляється починати.

/etc/apache2$ sudo /etc/init.d/apache2 start
 * Starting web server apache2
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
                                                                         [fail]

Якщо хтось запитає, я не прив’язаний до цієї адреси:

/etc/apache2$ sudo netstat -nap | grep :80
tcp        0      0 192.168.0.83:80       0.0.0.0:*        LISTEN      2822/node

Журнал помилок /var/log/apache2/error.logпросто говорить:

[Wed Aug 08 03:30:18 2012] [notice] caught SIGTERM, shutting down

Я пропустив місце в конфігурації Apache? Чи є щось, чого я не пам’ятаю шукати? Чому це не так просто, як я пам’ятав, що це?


1
Я не ображаюся ні на що, але ви можете, будь ласка, пояснити, як ви обрали найкращу відповідь на це питання? Відповідь, яку ви вибрали, посилався на інший дистрибутив, а моя відповідь була чіткою щодо Ubuntu. Чи міг я змінити свою відповідь будь-яким чином, оскільки ви її не вибрали?
pauska

Обидві ваші відповіді містили критичну Listen 192.168.0.82:80лінію, яка мені потрібна. Я вибрав відповідь cjc, тому що він заглибився в дещо більшу глибину того, чому потрібна ця лінія Я подумав згадати коментарі, використані у версії Apache, що постачається в комплекті з CentOS, було приємним доповненням. Але оскільки всі, здається, погоджуються з тим, що відповідь має йти до пауски, я пішов і надав його йому. Зрештою, я помічаю, переглядаючи редакції, що коментар Пауски суттєво вплинув на відповідь cjc у його нинішній формі.
День

Відповіді:


18

Apache прив'язується до всього за замовчуванням, навіть якщо ви вказали певні IP-адреси для запуску NameVirtualHost.

Додайте це у свою сторінку ports.conf:

Listen 192.168.0.82:80

Довідка: http://httpd.apache.org/docs/2.2/bind.html


16

Подивіться у /etc/apache2/ports.confфайл.

Ви знайдете директиву на зразок:

Listen 80

У коментарі до вікон CentOS описаний такий варіант:

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80

Змініть Listen 80рядок на те, що вам потрібно Listen 192.168.0.82:80.

Ви не в змозі запустити Apache зараз, оскільки він намагається прив’язати до порту 80 на всіх інтерфейсах (позначення 0.0.0.0), і ви nodeслухаєте на 192.168.0.83:80.

IP-адреса у віртуальних блоках хостів означає, що конкретний віртуальний хост відповість на запити, що надходять на цю IP-адресу. Він не визначає, як Apache буде прив'язуватися до інтерфейсів, які він бачить.


На Ubuntu httpd.conf порожній, оскільки вони використовують інший стиль файлів конфігурації (багато включає). Немає і «Слухай 80», як показали грефи з ОП.
pauska

1
Авжеж. Ubuntu. Я оновлю. Той, що grepвін робив, був проти: 80, тож все одно пропустити речі, як за замовчуванням Listen 80.
cjc

1
Цей коментар CentOS справді допоміг би мені. Дурний Ubuntu ...
День


0

Використовуйте наступне згідно з документами Apache :

Прослухайте 192.168.0.82:80

За деяких обставин (не всіх) можна було б піти трохи далі і зробити це:

Прослухайте some_name_in_my_localhost: 80

Таким чином ви робите свої конфігурації apache переносними в ситуаціях, коли у вас є ферма серверів Apache. У цьому є плюси і мінуси (як і у всьому іншому.)

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