Назад | Перейти на главную страницу

Apache не может изменить IP-адрес прослушивания

Я не могу заставить Apache прослушивать определенный IP-адрес. Это локальный веб-сервер, а не публичный.
Я использую CentOS 5.11, использую Apache 2.2.
Конфигурация по умолчанию httpd.conf отлично работает, но слушает только статический IP-адрес сервера. 10.0.0.101:80.

Я добавил Listen 10.0.0.103:80 до конца httpd.conf, но получите ошибку:

Starting httpd: (99)Cannot assign requested address: make_sock: could not bind to address 10.0.0.103:80

Я следую руководству по созданию кластера высокой доступности, которое можно увидеть на https://www.howtoforge.com/high_availability_heartbeat_centos. Если бы я только мог заставить Apache запускаться с этого адреса, я был бы золотым.

Я использую эту старую версию CentOS, потому что пытаюсь использовать старое оборудование, а не отказываться от него.

Я искал 4 часа подряд в Google, на сайте CentOS и на сайте Apache и не нашел решения.

Apache не будет связываться с вашим VIP, потому что он не настроен ни на каком сетевом интерфейсе.

Чтобы это произошло, вам нужно установить sysctl:

sysctl net.ipv4.ip_nonlocal_bind=1

После этого Apache может выполнить привязку, но, конечно же, трафик не будет передаваться, пока машине не будет назначен VIP.

В вашем httpd.conf проверьте, активна ли у вас старая директива Listen. Добавление новой директивы может привести к конфликту двух директив.

Иначе проверьте, прослушивает ли другой процесс порт 80, выполнив это:

netstat -plant

Надеюсь, вы увидите что-то подобное и убьете его:

Proto Recv-Q Send-Q Local Address           Foreign Address         State      PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     939/webserver