Страница 1 из 1

apache + nginx + phpmyadmin

Добавлено: 03 окт 2015, 21:23
alexg-nn
Ребяты, я, конечно, понимаю, что тема непрофильная, но, во-первых, концентрация линукс-мэнов тут более чем высокая, во-вторых, явно есть и администраторы, и в третьих, мне просто регаться на профильном форуме не хотелось, а тут я уже есть :)

Вопрос мой явно забитый и детский, но как ни бился, не смог решить проблему.
В общем, есть у меня VPS с ubuntu 14.04, на нём крутилось несколько сайтов на apache2 (виртуальные хосты). И там же был phpmyadmin. Всё было хорошо.
Потребовалось завести ещё пару сайтов на Node.js, посему решено было поставить nginx как прокси и раздавать с него трафик уже на апач или ноду.
Всё прошло хорошо, сайты завелись, но не завёлся phpmyadmin :(

Конфиги привожу, чтобы было попредметнее.
/etc/apache2/ports.conf (для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

listen 127.0.0.1:8090
listen 127.0.0.1:8080
listen 127.0.0.1:8081
listen 127.0.0.1:8082
listen 127.0.0.1:8083
listen 127.0.0.1:8084

<IfModule ssl_module>
	Listen 443
</IfModule>

<IfModule mod_gnutls.c>
	Listen 443
</IfModule>
Основной сайт висит на 8090 порту, остальные - это поддомены.
Конфиг основного сайта, апач (для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

<VirtualHost 127.0.0.1:8090>
    DocumentRoot /var/www/SERVERNAME/public_html
    
    <Directory /var/www/SERVERNAME/public_html>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>
</VirtualHost>
Конфиг прокси основного сайта, nginx (для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

server {
  listen 80;
  server_name SERVERNAME;
  server_name_in_redirect off;

  location / {
    proxy_pass http://127.0.0.1:8090/;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size 10m;
    proxy_connect_timeout 90;
  }
}
phpmyadmin установлен с интеграцией apache2 в /usr/share/phpmyadmin

Сейчас, если зайти на SERVERNAME/phpmyadmin, то после пяти минут висения браузер вываливается с ошибкой таймаута. Если зайти на SERVERNAME/phpmyadmin/, то покажется окно логина phpmyadmin, но после авторизации получаю ту же ошибку по таймауту, а адресная строка станет вида SERVERNAME:8090/phpmyadmin/index.php?token=XXX Однако, если после этого снова зайти на SERVERNAME/phpmyadmin/, то я окажусь залогиненым в админку phpmyadmin :thinking:

У меня слегка едет крыша от того, что же надо подкрутить. Виртуальные хосты настраивал вот по этому ответу.

Буду признателен за подсказки, если у кого подобная конфигурация работает.

Re: apache + nginx + phpmyadmin

Добавлено: 04 окт 2015, 00:17
donvictorio
если хотите хороший совет (не по теме, правда, но сильно упрощающий жизнь) - избавьтесь от апача. nginx, как вебсервер, покрывает 98% потребностей веб хостинга.
также по поводу phpmyadmin - если вы используете его как IDE для разработки и тестирования бд - это не оч хорошая идея. Навикат или dbforge с этим справляются куда лучше и удобнее. если лишь для нечастого администрирования бд на своём серваке - не обязательно делать глобальный алиас, это для хостеров удобно. для себя - сделайте хост с именем от балды на несуществующем домене и пропишите его в хосты на своей машине. так меньше левых людей будет долбиться на него и пытаться вскрыть, вам же никакой разницы не будет. либо оформите в виде поддомена, либо вообще слейте в каталог на каком-то рабочем сайте. а ещё проще - использовать для этих целей adminer. он вообще в одном файле php вмещается. прсотые вещи делать в нём можно и запускать откуда угодно вообще без каких-либо настроек.
https://www.adminer.org/

Re: apache + nginx + phpmyadmin

Добавлено: 04 окт 2015, 06:09
MX_Master
Про phpmyadmin забыл уже очень давно, юзаю исключительно dbforge.

В качестве проверенной отсебятины могу рекомендовать lighttpd.

Re: apache + nginx + phpmyadmin

Добавлено: 04 окт 2015, 09:13
Serg
MX_Master писал(а):Про phpmyadmin забыл уже очень давно, юзаю исключительно dbforge.
для dbforge нужна винда.
у phpmyadmin есть огромный плюс: не надо открывать доступ к mysql для всего мира, например чтобы иметь возможность порулить с помощью планшета на пляже.

P.S. nginx не пользую, считаю его лишним. :)

Re: apache + nginx + phpmyadmin

Добавлено: 04 окт 2015, 14:42
MX_Master
UAVpilot писал(а):
MX_Master писал(а):Про phpmyadmin забыл уже очень давно, юзаю исключительно dbforge.
для dbforge нужна винда.
у phpmyadmin есть огромный плюс: не надо открывать доступ к mysql для всего мира, например чтобы иметь возможность порулить с помощью планшета на пляже
пхпадмин это как раз и есть доступ к вашим бд для всего мира, а еще это доступ ко всем скриптам, которые рядом с ним лежат. Я лучше внешний порт на пару часов приоткрою пока работаю с бд, чем буду оставлять еще один вход

Re: apache + nginx + phpmyadmin

Добавлено: 04 окт 2015, 15:45
Serg
MX_Master писал(а):пхпадмин это как раз и есть доступ к вашим бд для всего мира, а еще это доступ ко всем скриптам, которые рядом с ним лежат.
Прямо-таки ко всем? На http://cncdevice.pro есть phpmyadmin - можешь попробовать доступиться. :)
MX_Master писал(а):Я лучше внешний порт на пару часов приоткрою пока работаю с бд
За эти пару часов и ломанут, ибо в mysql защиты никакой.

P.S. Сейчас "хакеров" развелось - чем хочешь ешь. Ставишь сервер с IP-адресом, который до этого момента никогда и нигде не использовался - через полчаса-час во лог сыпятся записи о попытках подбора пароля по ssh...

Re: apache + nginx + phpmyadmin

Добавлено: 04 окт 2015, 17:26
MX_Master
Фаервол вышел из моды? Для меня обычное дело открывать порты на свой IP пока я работаю с сервером. Не говоря уже о том, что порты далеко не дефолтные. Если лично ваш пхпадмин засел как партизан и не один сканер его не отрыл - поздравляю, у вас талант. Но вот у автора темы он лежит почти на виду. Именно поэтому я и не рекомендую.
UAVpilot писал(а):через полчаса-час во лог сыпятся записи о попытках подбора пароля по ssh...
категорически согласен, но мы-то с вами не первый день в Интернете и умеем грамотно настраивать SSH вкупе с фаерволом

Re: apache + nginx + phpmyadmin

Добавлено: 04 окт 2015, 19:32
Serg
MX_Master писал(а):Фаервол вышел из моды? Для меня обычное дело открывать порты на свой IP пока я работаю с сервером.
При работе через сотовых операторов адрес может меняться даже в пределах одного "сеанса", как правило в местах большой нагрузки на сеть, на тех-же курортах.
MX_Master писал(а):категорически согласен, но мы-то с вами не первый день в Интернете и умеем грамотно настраивать SSH вкупе с фаерволом
А mysql как настраивать? У него ж даже нет элементарной защиты от подбора пароля...

Re: apache + nginx + phpmyadmin

Добавлено: 04 окт 2015, 19:38
alexg-nn
Дискуссия немного не в то русло пошла. Я PMA использую только когда надо визуально посмотреть табличку какую, остальное через консоль.

Re: apache + nginx + phpmyadmin

Добавлено: 04 окт 2015, 20:34
MX_Master
Хорошо, давайте вернёмся от курорта с плохим сигналом к делу
alexg-nn писал(а):Сейчас, если зайти на SERVERNAME/phpmyadmin, то после пяти минут висения браузер вываливается с ошибкой таймаута. Если зайти на SERVERNAME/phpmyadmin/, то покажется окно логина phpmyadmin, но после авторизации получаю ту же ошибку по таймауту, а адресная строка станет вида SERVERNAME:8090/phpmyadmin/index.php?token=XXX Однако, если после этого снова зайти на SERVERNAME/phpmyadmin/, то я окажусь залогиненым в админку phpmyadmin
Могу объяснить последнее чудо. После успешного логина скрипт РМА сохраняёт свои куки в вашем браузере просто для домена SERVERNAME, не учитывая порт. Поэтому, далее заходя на этот адрес с любого порта, скрипт РМА законно покажет вам, что вы успешно вошли.

А по кусочкам настроек, которые вы дали, всё чисто. Разве что не видно строчек вида

Код: Выделить всё

NameVirtualHost 127.0.0.1:8080
NameVirtualHost 127.0.0.1:8090

Re: apache + nginx + phpmyadmin

Добавлено: 04 окт 2015, 20:42
alexg-nn
MX_Master, это понятно. Вопрос, как настроить правильно проксирование nginx. Например, почему адресная строка меняет вид? Порт 8090 вообще наружу не должен быть виден, это "междусобойчик" апача и nginx.

Re: apache + nginx + phpmyadmin

Добавлено: 04 окт 2015, 20:44
alexg-nn
MX_Master писал(а):Разве что не видно строчек вида
Потому что эти директивы устарели, мне об этом заявляет апач при перезапуске.
NameVirtualHost has no effect and will be removed in the next release

Re: apache + nginx + phpmyadmin

Добавлено: 04 окт 2015, 21:01
MX_Master
alexg-nn писал(а):

Код: Выделить всё

listen 127.0.0.1:8090
listen 127.0.0.1:8080
listen 127.0.0.1:8081
listen 127.0.0.1:8082
listen 127.0.0.1:8083
listen 127.0.0.1:8084

<IfModule ssl_module>
   Listen 443
</IfModule>

<IfModule mod_gnutls.c>
   Listen 443
</IfModule>
Из этих настроек я вижу что, если у апача включен SSL модуль или модуль GNUTLS, то апач становится доступен извне с адресов вида https://

Re: apache + nginx + phpmyadmin

Добавлено: 09 окт 2015, 05:21
AndyBig
donvictorio писал(а):избавьтесь от апача. nginx, как вебсервер, покрывает 98% потребностей веб хостинга
А наоборот? :)
Я, например, довольно часто использую .htaccess, который не обрабатывается nginx-ом :)
MX_Master писал(а):пхпадмин это как раз и есть доступ к вашим бд для всего мира, а еще это доступ ко всем скриптам, которые рядом с ним лежат.
Это Вы не умеете его готовить :) У меня он, к примеру, завязан на сабдомен quitnasto.мойсайт.ru (буквы другие, но смысл тот же), плюс доступ к каталогу требует HTTP-авторизации, так что даже если кто-то и наткнется случайно на этот набор букв в сабдомене, то даже не поймет что там находится.
UAVpilot писал(а):Ставишь сервер с IP-адресом, который до этого момента никогда и нигде не использовался - через полчаса-час во лог сыпятся записи о попытках подбора пароля по ssh...
На днях переносил хостинг на другой сервер, записи о попытках входа по SSH начались буквально через 10 минут после поднятия сети :)
UAVpilot писал(а):А mysql как настраивать? У него ж даже нет элементарной защиты от подбора пароля...
Есть fail2ban, он реализует защиту от перебора паролей практически для всех сервисов. У меня настроен 30-минутный бан после 3 неверных попыток.
MX_Master писал(а):А по кусочкам настроек, которые вы дали, всё чисто. Разве что не видно строчек вида
NameVirtualHost 127.0.0.1:8080
Апач уже считает эти опции устаревшими. По крайней мере версия 2.4.6:

Код: Выделить всё

Oct  9 05:19:05 mysite httpd: AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf.d/httpd-vhosts.conf:20

Re: apache + nginx + phpmyadmin

Добавлено: 09 окт 2015, 05:40
AndyBig
alexg-nn писал(а):Вопрос, как настроить правильно проксирование nginx
Я сам не ставил nginx, но читал всяческие рекомендации по этой теме... Вроде настроено правильно, только я видел, что секция server включена внутрь секции http. Не знаю насколько это критично :)
Что еще пишут:
Т.к. теперь все запросы к Apache приходят не от удалённых клиентов, а от Nginx, то в итоге IP-адрес клиента Apache определяет как локальный (127.0.0.1). Для решения этой проблемы нам нужен модуль RPAF. Он берет тело заголовка X-Forwarded-For, присланного от фронтенда (Nginx) и заменяет значение заголовка REMOTE_ADDR на бекенде (Apache).
Но опять же - не знаю, влияет ли это на поведение Апача или только на данные, которые скрипты могут получить из глобальных переменных.
alexg-nn писал(а):Например, почему адресная строка меняет вид? Порт 8090 вообще наружу не должен быть виден, это "междусобойчик" апача и nginx.
Но сам-то PMA видит, что обратились на сервер по адресу SERVERNAME:8090/phpmyadmin, он же не знает, что это прокся перенаправила сюда, а у сайта на самом деле совсем другой порт.

А вообще, что пишут в логах Апач и nginx? Предупреждения, ошибки? PHP лог выводит в отдельный файл или в апачевский лог?

Re: apache + nginx + phpmyadmin

Добавлено: 09 окт 2015, 08:27
Serg
AndyBig писал(а):Есть fail2ban, он реализует защиту от перебора паролей практически для всех сервисов. У меня настроен 30-минутный бан после 3 неверных попыток.
"Подборщики" уже давно знают про fail2ban и пытаются его обойти - например одновременно атакуют с разных IP и делают попытки по одной в 40 минут или реже...

Re: apache + nginx + phpmyadmin

Добавлено: 09 окт 2015, 11:31
AndyBig
UAVpilot писал(а):например одновременно атакуют с разных IP и делают попытки по одной в 40 минут или реже...
Да флаг им в руки, сервер рассыпется от старости раньше, чем они таким образом подберут пару логин/пароль :)