У меня есть сервер с кучей 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? Есть ли что-то, что я не помню, чтобы искать? Почему это не так просто, как я помнил?
apache-2.2
ubuntu
Дэн
источник
источник
Listen 192.168.0.82:80
строку, которая мне и была нужна. Я выбрал ответ cjc, потому что он углубился в вопрос о том , зачем нужна эта строка. Я подумал, что упоминание комментариев, используемых в версии Apache, которая поставляется в комплекте с CentOS, было хорошим дополнением. Но поскольку все, похоже, в целом согласны с тем, что ответ должен идти к Пауске, я пошел дальше и дал его ему. В конце концов, я заметил, увидев исправления, что комментарий Паушки значительно повлиял на ответ cjc в его нынешнем виде.Ответы:
Apache связывается со всем по умолчанию, даже если вы указываете определенные IP-адреса для запуска NameVirtualHost.
Добавьте это в ваши ports.conf:
Ссылка: http://httpd.apache.org/docs/2.2/bind.html
источник
Посмотри в
/etc/apache2/ports.conf
файле.Вы найдете директиву как:
Комментарий к блокам CentOS описывает эту опцию:
Для того, что вы хотите, измените
Listen 80
строку наListen 192.168.0.82:80
.Вы не можете запустить Apache прямо сейчас, потому что он пытается подключиться к порту 80 на всех интерфейсах (обозначение 0.0.0.0), и вы
node
прослушиваете 192.168.0.83:80.IP в блоках виртуального хоста означает, что этот конкретный виртуальный хост будет отвечать на запросы, поступающие на этот IP-адрес. Он не определяет, как Apache будет связываться с интерфейсами, которые он видит.
источник
grep
Он делает против: 80 , так что собирался пропустить вещи в любом случае, так как по умолчаниюListen 80
.Директива Listen - это то, что вы ищете:
Больше информации в документации .
источник
Используйте следующие документы Apache :
В некоторых случаях (не во всех) можно пойти немного дальше и сделать это:
Таким образом, вы делаете переносимые конфигурации Apache в ситуациях, когда у вас есть ферма серверов Apache. Есть плюсы и минусы в этом (как и во всем остальном.)
источник