nginx с двойными условиями (ipgeo + useragent) - PullRequest
0 голосов
/ 04 октября 2018

мы развертываем международный веб-сайт, используя разные TLD.

Мы используем модуль ipgeo из nginx для определения местоположения пользователя и, если необходимо, делаем переадресацию.

Но мы нашли некоторыепроблемы с ботами, поэтому мы хотим предотвратить перенаправление в этом случае.

Для этого нам потребуется использовать двойные условия в конфигурации nginx, а это не поддерживается.

Можем ли мыиспользовать другое решение?Спасибо

Это фрагмент кода из конфигурации Великобритании, я думаю, что это само по себе.

    if ($http_user_agent !~* "google|yahoo|bingbot|baiduspider|yandex|yeti|yodaobot|gigabot|ia_archiver|facebookexternalhit|twitterbot") {

    # goto global site
      if ($geoip_city_continent_code != "EU") {
        rewrite ^ https://xxxx.us$request_uri permanent;
      }

    # goto EU site
      if ($geoip_city_country_code != "GB") {
        rewrite ^ https://xxxx.eu$request_uri permanent;
      }


    # remains in UK site
    }

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Решение для нас пришло от @ Kernelv5.

Кроме того, оно добавляет больше гибкости перенаправлениям без добавления сложности.

Спасибо

  set $continent "${geoip_city_continent_code}";
  set $country "${geoip_city_country_code}";

  if ($http_user_agent ~* "google|yahoo|bingbot|baiduspider|yandex|yeti|yodaobot|gigabot|ia_archiver|facebookexternalhit|twitterbot") {
    set $continent "US";
    set $country "US";
  }

  if ($country = "GB") {
    rewrite ^ https://xxxx.co.uk$request_uri permanent;
  }

  if ($continent = "EU") {
    rewrite ^ https://xxxx.eu$request_uri permanent;
  }
0 голосов
/ 04 октября 2018

Это может работать с вашей системой.Пожалуйста, посмотрите

if ($http_user_agent !~* "google|yahoo|bingbot|baiduspider|yandex|yeti|yodaobot|gigabot|ia_archiver|facebookexternalhit|twitterbot") {

# Here you can setup a value which will skip redirect. 
set $geoip_city_continent_code="UK";


}

# goto global site
      if ($geoip_city_continent_code != "EU") {
        rewrite ^ https://xxxx.us$request_uri permanent;
      }

    # goto EU site
      if ($geoip_city_country_code != "GB") {
        rewrite ^ https://xxxx.eu$request_uri permanent;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...