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

nginx перенаправляет запросы с прокси apache на реальный адрес сервера

Описание:

[server 1] <-|-> [server 2]
[Apache]   <-|-> [nginx <--> gunicorn <--> django]

Apache работает на сервере 1, который незаметно перенаправляет только один поддомен на сервер 2. По какой-то причине nginx возвращает значение 301, перемещенное навсегда, и перенаправляет на реальный IP-адрес сервера 2.

Конфигурация сервера 1 - Apache

RewriteCond %{HTTP_HOST} ^subdomain\.domain\.com$
RewriteRule (.*) http://123.456.789.000/$1 [P,L]

Конфигурация сервера 2 - nginx

server {
  listen   80;
  # I put the 'subdomain.domain.com' name here while trying to fix the issue.
  server_name subdomain.domain.com 123.456.789.000;

  location / {
      proxy_pass_header Server;
      proxy_set_header Host $host;
      proxy_redirect off;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Scheme $scheme;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_connect_timeout 10;
      proxy_read_timeout 10;
      proxy_pass http://localhost:8000/;
  }

Я уверен, что что-то не так с конфигурацией прокси в nginx, который настроен для обработки пулеметчика. К сожалению, у меня недостаточно опыта, чтобы знать, какие заголовки вызывают это. Также я действительно не знаю, в чем разница между X-Real-IP и X-Forwarded-For.

редактировать:

Статические файлы, обрабатываемые этим расположением в приведенном выше блоке сервера, легко доступны из домена сервера 1 без перенаправления на локальный IP-адрес сервера 2.

  location /static {
    autoindex on;
    alias /var/www/django/static;
  }