Назад | Перейти на главную страницу

NGINX, GeoIP, Varnish: слишком много перенаправлений

У меня два сервера. Один в Сингапуре (data.example.me), а другой в Европе (eu.data.example.me).

Я хочу, чтобы веб-сайт обслуживал пользователей с ближайшего сервера, когда они посещают мой веб-сайт.

Я настроил Nginx на сервере Signapore с помощью модуля GeoIP.

Я получаю "ERR_TOO_MANY_REDIRECTS" при посещении веб-сайта (data.example.me) из Европы. С других мест работает нормально.

Это конфигурация на сервере Европы. В нем установлен лак.

# Marker to tell the VCL compiler that this VCL has been adapted to the
# new 4.0 format.
vcl 4.0;

# Default backend definition. Set this to point to your content server.
backend default {
.host = "139.51.1.1"; // Points to Nginx Server in Singapore
.port = "80";
}

На сервере Nginx в Сингапуре конфигурация выглядит следующим образом.

map $geoip_city_continent_code $closest_server {
default data.example.me;
EU      eu.data.example.me;
}

    server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.php index.html index.htm index.nginx-debian.html /_h5ai/public/index.php;

    server_name data.example.me eu.data.example.me;

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ =404;
            autoindex on;

            # Site Settings (DDOS & Other Stuff)
            limit_req zone=one burst=10 nodelay;
            limit_conn addr 5;

            # Bandwidth Control
            limit_rate_after 102400K;
            limit_rate 5120K;
    }

    client_body_timeout 5s;
    client_header_timeout 5s;

    #GeoIP
     if ($closest_server != $host) {
rewrite ^ $scheme://$closest_server$request_uri break;
}

    # pass PHP scripts to FastCGI server
    #
    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
    #
    #       # With php-fpm (or other unix sockets):
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    #       # With php-cgi (or other tcp sockets):
    #       fastcgi_pass 127.0.0.1:9000;
    }

    location ~ /\.ht {
            deny all;
    }
    }

    server {
    listen 80;
    server_name 139.59.123.176;

    return 301 $scheme://data.vineethp.me$request_uri;
    }

В 302 Found код перенаправления, скорее всего, возвращается вашим приложением вместо nginx, поскольку в вашей конфигурации nginx нет ссылки на временное перенаправление.