- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Всем привет! Бьюсь над задачкой уже не один день и не могу найти решение.
Есть сервер с Nginx. Установил на него модуль geoip2 и новые базы от MaxMind (которые .mmdb). Настроил конфиг nginx и протестировал:
http { geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb { auto_reload 5m; $geoip2_metadata_country_build metadata build_epoch; $geoip2_data_country_code default=US country iso_code; $geoip2_data_country_name country names en; } geoip2 /usr/share/GeoIP/GeoLite2-City.mmdb { $geoip2_data_city_name default=London city names en; }Чтобы удостовериться в работоспособности добавил add_header X-Real-IP в заголовок. Работает, IP отлавливает, показывает страны-города. Проверил работоспособность:
в секцию http { и
в server нужного сайта. Работает.
Дальше добавил сервер за Cloudflare. Чтобы пробрасывались реальные адреса создал cloudflare.inc:
и подключил, модуль ngx_http_realip_module имеется. Проверил - работает, реальный IP в логах, все хорошо.
И вот с этого момента начались приключения. Как-будто бы geoip2 перестал срабатывать. Инструкции
map $geoip2_data_country_code $allowed_country { default no; RU yes; }и
не выполняются. Выглядит так, как будто либо поиска по базе вообще не происходит, либо туда передается неверный IP и поэтому не срабатывает. Add_header за Cloudflare уже не пробрасывается, естественно, и проверить не получится. Пробовал создавать map и специально передавать переменную в поиск по базе:
$geoip2_data_country_code source=$beri_IP_tut default=US country iso_code; $geoip2_data_country_name source=$beri_IP_tut country names en;Результатов нет. Почему так? Стандартный $remote_addr видит правильный IP посетителя и пишет его в лог как полагается. Почему же тогда не срабатывает поиск по базе geoip2? Подставлять $remote_addr в качестве source= я тоже пробовал, не помогло. В чем может быть затык?
Старый вариант базы (с .dat) работает без проблем: ip видит и nginx инструкции выполняет (за Cloudflare).
Подскажите, пожалуйста, куда копать.
Зачем вам этот древний MaxMind?
Cloudflare сам страну передает -
HTTP_CF_IPCOUNTRYРазобрался.
В nginx для виртуального хоста создается ДВЕ конфигурации server {
Первая слушает :80; , а вторая :443 ssl; В моем случае условие для хоста на проверку страны было указано только для второй конфигурации ssl и без CF оно срабатывало. Добавил условия для первого server и вуаля, все работает! Мда, и на старуху бывает проруха.
Зачем вам этот древний MaxMind?
Cloudflare сам страну передает
Привычка + куча уже готовых и проверенных конструкций-условий для блокировки ботов, юзерагентов и тд. на уровне nginx. А еще, когда читал гайды по использованию видел много нареканий на точность определения самим CF. Правда, это все были обсуждения годов 17-18, сейчас может точность идеальная, но все же.
Зачем вам этот древний MaxMind?
Cloudflare сам страну передает -
В каких-то случаях это небезопасно. Это ведь
HTTP_CF_IPCOUNTRYподменить можно
а как устанавливали? Nginx пересобирали?
На современных версиях nginx, модуль можно собрать как динамический и подключить его в конфигурационном файле nginx