Documentation index
- ReadMe
- Things To Know
-
- New Style Rotation
Nginx - это HTTP-сервер, обычно более быстрый чем Apache. Его особенность в том, как он обрабатывает запросы и отсутствии каких-либо тяжелых “довесок”. Обычно nginx используеют на доменах\серверах, с которых идет раздача статики.
Сейчас становится все более распространенной схема front\back - nginx\Apache.
Смысл этой связки в том, что все входящие конекты принимает nginx (базово более быстрый) и раздает статику, а все запросы к скриптам nginx форвардит апачу. Это заметно ускоряет работу, если у вас и скрипты и контент раздаются с одного и того же сервака.
Однако тут есть ньюанс: все трейд скрипты логят ИП адреса, а при передаче запроса от nginx к апачу последний по умолчанию видит один и тот же ИП - 127.0.0.1, тк запрос приходит от nginx, который фактически работает на том же серваке.
Другой вариант настройки: апач видит все запросы от ИП сервера (а не реального ИП юзера), и соответственно все запросы скрипт будет видить от одного и того же ИП, из-за чего может сработать защита по ип (все хиты с одного ИП и их перестанет учитывать). Обычно этот вариант можно распознать когда скрипт видит что ИП сервака и ваш ИП совпадают. В home при этом будет надпись “Nginx ↔ Apache ERROR $_SERVER[SERVER_ADDR] == $_SERVER[REMOTE_ADDR], please, contact admin.”. Надо отписать админу и показать эту страницу.
Что бы восстановить нормальную ситуацию и дать трейдскрипту работать надо попросить ваш суппорт поставить для apache модуль mod_realip, а в конфиге nginx прописать, что бы он писал настоящий ИП в X_REAL_IP.
Итого: если открыть /scj/admin/test.php то в поле REMOTE_ADDR должен быть Ваш ИП, а не ИП сервака или 127.0.0.1
Другая распространенная ошибка в том, что ИП серфера передается не только в REAL_IP, но еще в и HTTP_FORWARED_FOR.
Определить это так же просто - если открыть /scj/admin/test.php то в поле HTTP_FORWARED_FOR увидите свой ИП.
Смарт определяет прокси в том числе по полю HTTP_FORWARED_FOR и ему начинается казаться что все хиты идут через прокси.
Как пофиксить: отписать админу, что б ИП передавался только в REAL_IP. Проверить, что пофикшено: если открыть /scj/admin/test.php то поля HTTP_FORWARED_FOR быть не должно.
Результат должен быть такой: REMOTE_ADDR и REAL_IP - ваш реальный ИП, SERVER_ADDR - IP сервака (и логично что ваш ип и ип сервака не совпадают), HTTP_FORWARED_FOR отсутсвует.
Итого: если открыть /scj/admin/test.php то должно быть
По дефолту авторизация в админку - это базовая технология апача (.htaccess), но nginx по деофлту эти файлы не читает, поэтому варианта 2
Вариант 1
В админке переключаетесь на “Switch to multiaccess”, админка будет спрашивать пароль, однако каталоги с backups например будут все так же доступны с веба и кто угодно может утянуть ваш бекап. Поэтому лучше вариант 2.
Вариант 2
Попросить админа прописать в nginx что-то вроде
location /scj/admin/files/ { deny all; } location /scj/logs/ { deny all; } location /scj/data/ { deny all; } location /scj/backup/ { deny all; } location /scj/admin/ { auth_basic "Admin Zone"; auth_basic_user_file /home/user/www/$domain/scj/admin/.htpasswd; } location ~* /scj/admin/(.*)\.php$ { index index.php; auth_basic "Admin Zone"; auth_basic_user_file /home/user/www/$domain/scj/admin/.htpasswd; }
Есть несоклько вариантов задать пароль
Возможна следующая ошибка: стоит авторизация в варианте 3, те nginx (например пароль1) и вы в то же время включаете авторизацию 2 - когда спрашивает пароль скрипт (условно пароль2). Но поскольку у браузера поле ввода пароля одно то туда можно ввести только 1 пароль и получается что либо одна либо другая авторизация не пройдет тк разные пароли.
Что делать: использовать какой-то один вариант.