Прячем Apache от внешних запросов
Posted: Mon Dec 09, 2013 2:19 pm
Недавно в теме Общие вопросы » Debian/Ubuntu » Support for Debian/Ubuntu я предложил спрятать Apache от внешнего мира, оставив ему возможность отвечать только на запросы Nginx. Предложенное "решение" оказалось только первым шагом к цели, поэтому считаю необходимым сказать об этом и привести полный алгоритм.
Для начала нужно убедиться какой интерфейс используется в качестве внутреннего. Исторически сложилось так, что в Debian VPS на OpenVZ для этого используется интерфейс venet0 с inet addr:127.0.0.2, возможно существуют и иные варианты о которых я не знаю. Поэтому перед тем как начинать действовать предлагаю заглянуть в вывод ifconfig.
В ходе описании буду употреблять 127.0.0.1, как более привычный.
Приступим.
В /etc/httpd/conf.d/ (или /etc/apache2/conf.d для Debian) удаляем файл IPсервера.conf или комментируем все его строки. Убеждаемся в наличии или создаём файл 127.0.0.1.conf с содержимым:
В /etc/nginx/conf.d/IPсервера.conf, в строке 6 "proxy_pass http://IPсервера:8080;" меняем внешний IP на 127.0.0.1
Во всех /home/пользователь/conf/web/httpd.conf (или apache2.conf для Debian) во всех строках "<VirtualHost IPсервера:8080>" заменяем IP на 127.0.0.1
Там же в файлах nginx.conf находим все строки "proxy_pass http://IPсервера:8080;" и тоже заменяем IP на 127.0.0.1
Полдела сделано, можно перезапустить сервисы Apache и Nginx и проверить работу виртуальных хостов - всё должно работать.
Теперь делаем так, чтоб новые виртуальные хосты сразу создавались с нужными параметрами.
В /usr/local/vesta/data/templates/web/httpd/ (или apache2/ для Debian) в первой строке всех шаблонов (файлы .tpl и .stpl) меняем переменную %ip% на 127.0.0.1.
В /usr/local/vesta/data/templates/web/nginx/ в строках шаблонов "proxy_pass http://%ip%:%web_port%;" и "proxy_pass http://%ip%:%web_ssl_port%;" делаем аналогичную замену.
Создание новых хостов протестировал только на Debin, не думаю что на других системах будут проблемы.
У меня на данный момент такие конфигурации проработали двое суток на Debian и сутки на Сentos - к обоим серверам никаких вопросов не появилось.
Для начала нужно убедиться какой интерфейс используется в качестве внутреннего. Исторически сложилось так, что в Debian VPS на OpenVZ для этого используется интерфейс venet0 с inet addr:127.0.0.2, возможно существуют и иные варианты о которых я не знаю. Поэтому перед тем как начинать действовать предлагаю заглянуть в вывод ifconfig.
В ходе описании буду употреблять 127.0.0.1, как более привычный.
Приступим.
В /etc/httpd/conf.d/ (или /etc/apache2/conf.d для Debian) удаляем файл IPсервера.conf или комментируем все его строки. Убеждаемся в наличии или создаём файл 127.0.0.1.conf с содержимым:
Code: Select all
NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080
NameVirtualHost 127.0.0.1:8443
Listen 127.0.0.1:8443
Во всех /home/пользователь/conf/web/httpd.conf (или apache2.conf для Debian) во всех строках "<VirtualHost IPсервера:8080>" заменяем IP на 127.0.0.1
Там же в файлах nginx.conf находим все строки "proxy_pass http://IPсервера:8080;" и тоже заменяем IP на 127.0.0.1
Полдела сделано, можно перезапустить сервисы Apache и Nginx и проверить работу виртуальных хостов - всё должно работать.
Теперь делаем так, чтоб новые виртуальные хосты сразу создавались с нужными параметрами.
В /usr/local/vesta/data/templates/web/httpd/ (или apache2/ для Debian) в первой строке всех шаблонов (файлы .tpl и .stpl) меняем переменную %ip% на 127.0.0.1.
В /usr/local/vesta/data/templates/web/nginx/ в строках шаблонов "proxy_pass http://%ip%:%web_port%;" и "proxy_pass http://%ip%:%web_ssl_port%;" делаем аналогичную замену.
Создание новых хостов протестировал только на Debin, не думаю что на других системах будут проблемы.
У меня на данный момент такие конфигурации проработали двое суток на Debian и сутки на Сentos - к обоим серверам никаких вопросов не появилось.