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

Прокси-сервер Nginx отличается от поведения A-records

У меня есть домен, в котором у меня есть подстановочная запись A для IP (61.61.61.61) (не под моим контролем).

Поскольку я хотел, чтобы некоторые страницы в домене находились под моим контролем, я подумал, что проксировать все данные через nginx легко. Но похоже, что это не то же самое поведение. Вместо этого, когда я пытаюсь загрузить основной индекс сайта, который раньше отображался правильно, теперь он перенаправляет меня на другой сайт.

Я думаю, это потому, что nginx не проксирует все данные или не пересылает некоторые заголовки.

Я настроил nginx таким образом

server {
    server_name test.com;
    root /var/www/test.com/;
    index  index.html index.htm index.php;

    merge_slashes on;

    location /landers {
        if (!-e $request_filename) {
            rewrite ^.*$ /index.php last;
        }
    }

    location / {
        proxy_pass http://61.61.61.61:80;
    }

    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        # edit below to fix config display
        fastcgi_param SCRIPT_FILENAME /var/www/test.com$fastcgi_script_name;
    }
}

Запрос не возвращается на сторонний сервер, вероятно, поэтому он перенаправляет меня на другой сайт на этом сервере.

[Редактировать]

Итак, чтобы быть более ясным. Я хочу, чтобы URL-адрес / лендеры размещались на моей машине. Вот почему у меня для этого есть другое место в nginx.

Остальные запросы к test.com должны поступать на правильный IP-адрес (и обрабатываться сторонним сервером).

Все работало нормально, когда у меня был IP-адрес как A-запись. Но теперь nginx проксирует запрос, и я получаю 301 редирект обратно (с сервера с IP 61.61.61.61).

Обычно я должен получать не 301 обратно, а скорее проксируемую страницу. Вот почему я предполагаю, что запрос к серверу 61.61.61.61 несколько отличается от прямого (с использованием A-записей вместо проксирования на этот сервер). Это заставляет меня думать, что проксируемый HTTP-запрос несколько отличается от не проксируемой версии, поэтому сервер 61.61.61.61 не может сопоставить правильный виртуальный хост на своем сервере.

Надеюсь, это проясняет ситуацию.