apache + nginx + phpmyadmin

Аватара пользователя
alexg-nn
Мастер
Сообщения: 793
Зарегистрирован: 08 фев 2015, 12:45
Репутация: 127
Настоящее имя: Алексей
Откуда: Нижний Новгород
Контактная информация:

apache + nginx + phpmyadmin

Сообщение 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:

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

Буду признателен за подсказки, если у кого подобная конфигурация работает.
Аватара пользователя
donvictorio
Мастер
Сообщения: 2451
Зарегистрирован: 11 окт 2012, 16:26
Репутация: 682
Настоящее имя: Виктор
Откуда: Санкт-Петербург
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение donvictorio »

если хотите хороший совет (не по теме, правда, но сильно упрощающий жизнь) - избавьтесь от апача. nginx, как вебсервер, покрывает 98% потребностей веб хостинга.
также по поводу phpmyadmin - если вы используете его как IDE для разработки и тестирования бд - это не оч хорошая идея. Навикат или dbforge с этим справляются куда лучше и удобнее. если лишь для нечастого администрирования бд на своём серваке - не обязательно делать глобальный алиас, это для хостеров удобно. для себя - сделайте хост с именем от балды на несуществующем домене и пропишите его в хосты на своей машине. так меньше левых людей будет долбиться на него и пытаться вскрыть, вам же никакой разницы не будет. либо оформите в виде поддомена, либо вообще слейте в каталог на каком-то рабочем сайте. а ещё проще - использовать для этих целей adminer. он вообще в одном файле php вмещается. прсотые вещи делать в нём можно и запускать откуда угодно вообще без каких-либо настроек.
https://www.adminer.org/
Аватара пользователя
MX_Master
Мастер
Сообщения: 7480
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3101
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение MX_Master »

Про phpmyadmin забыл уже очень давно, юзаю исключительно dbforge.

В качестве проверенной отсебятины могу рекомендовать lighttpd.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5182
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение Serg »

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

P.S. nginx не пользую, считаю его лишним. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7480
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3101
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение MX_Master »

UAVpilot писал(а):
MX_Master писал(а):Про phpmyadmin забыл уже очень давно, юзаю исключительно dbforge.
для dbforge нужна винда.
у phpmyadmin есть огромный плюс: не надо открывать доступ к mysql для всего мира, например чтобы иметь возможность порулить с помощью планшета на пляже
пхпадмин это как раз и есть доступ к вашим бд для всего мира, а еще это доступ ко всем скриптам, которые рядом с ним лежат. Я лучше внешний порт на пару часов приоткрою пока работаю с бд, чем буду оставлять еще один вход
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5182
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение Serg »

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

P.S. Сейчас "хакеров" развелось - чем хочешь ешь. Ставишь сервер с IP-адресом, который до этого момента никогда и нигде не использовался - через полчаса-час во лог сыпятся записи о попытках подбора пароля по ssh...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7480
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3101
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение MX_Master »

Фаервол вышел из моды? Для меня обычное дело открывать порты на свой IP пока я работаю с сервером. Не говоря уже о том, что порты далеко не дефолтные. Если лично ваш пхпадмин засел как партизан и не один сканер его не отрыл - поздравляю, у вас талант. Но вот у автора темы он лежит почти на виду. Именно поэтому я и не рекомендую.
UAVpilot писал(а):через полчаса-час во лог сыпятся записи о попытках подбора пароля по ssh...
категорически согласен, но мы-то с вами не первый день в Интернете и умеем грамотно настраивать SSH вкупе с фаерволом
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5182
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение Serg »

MX_Master писал(а):Фаервол вышел из моды? Для меня обычное дело открывать порты на свой IP пока я работаю с сервером.
При работе через сотовых операторов адрес может меняться даже в пределах одного "сеанса", как правило в местах большой нагрузки на сеть, на тех-же курортах.
MX_Master писал(а):категорически согласен, но мы-то с вами не первый день в Интернете и умеем грамотно настраивать SSH вкупе с фаерволом
А mysql как настраивать? У него ж даже нет элементарной защиты от подбора пароля...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
alexg-nn
Мастер
Сообщения: 793
Зарегистрирован: 08 фев 2015, 12:45
Репутация: 127
Настоящее имя: Алексей
Откуда: Нижний Новгород
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение alexg-nn »

Дискуссия немного не в то русло пошла. Я PMA использую только когда надо визуально посмотреть табличку какую, остальное через консоль.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7480
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3101
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение 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
Аватара пользователя
alexg-nn
Мастер
Сообщения: 793
Зарегистрирован: 08 фев 2015, 12:45
Репутация: 127
Настоящее имя: Алексей
Откуда: Нижний Новгород
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение alexg-nn »

MX_Master, это понятно. Вопрос, как настроить правильно проксирование nginx. Например, почему адресная строка меняет вид? Порт 8090 вообще наружу не должен быть виден, это "междусобойчик" апача и nginx.
Аватара пользователя
alexg-nn
Мастер
Сообщения: 793
Зарегистрирован: 08 фев 2015, 12:45
Репутация: 127
Настоящее имя: Алексей
Откуда: Нижний Новгород
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение alexg-nn »

MX_Master писал(а):Разве что не видно строчек вида
Потому что эти директивы устарели, мне об этом заявляет апач при перезапуске.
NameVirtualHost has no effect and will be removed in the next release
Аватара пользователя
MX_Master
Мастер
Сообщения: 7480
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3101
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение 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://
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение 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
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение 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 лог выводит в отдельный файл или в апачевский лог?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5182
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение Serg »

AndyBig писал(а):Есть fail2ban, он реализует защиту от перебора паролей практически для всех сервисов. У меня настроен 30-минутный бан после 3 неверных попыток.
"Подборщики" уже давно знают про fail2ban и пытаются его обойти - например одновременно атакуют с разных IP и делают попытки по одной в 40 минут или реже...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: apache + nginx + phpmyadmin

Сообщение AndyBig »

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

Вернуться в «Оффтоп»