VirtualHost позади прокси реверса nginx не удается решить правильно

У меня есть пара подсистемы балансировки нагрузки перед 4 веб-серверами, которые выполняют nginx на порте 80 и прокси апачу на порте 8081 для нестатического содержания как код php. Я выполняю несколько доменов в этой конфигурации. Когда я поразил домен в 80 для статического содержания, он хорошо работает. Nginx возвращает то, что он должен. Когда я перехожу к странице PHP, она всегда поражает виртуальный хост по умолчанию.

Когда я вместо этого посещаю порт 8081 на php, пролистывают подсистемы балансировки нагрузки это серверы и php страницы и статическое содержание правильно.

Кажется, что nginx правильно не выдает домены апачу для него для определения, что служить. Где в моей конфигурации я должен искать эту ошибку, или я неправильно понимаю то, что происходит?

Вот является мой nginx proxy_params содержанием:

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

Мои блоки сервера включают этот код:

  location ~ /\. { 
    deny all; 
  }

  location ~.*\.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|html|htm|txt|js|css|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso|ico)$ {
    expires 7d;
    try_files $uri @apache;
  }

  location / {
    proxy_pass http://127.0.0.1:8081;
  }

  location @apache {
    proxy_pass http://127.0.0.1:8081;
  }
0
задан 29 May 2015 в 01:43
1 ответ

Файл proxy_params не включен в конфигурацию каким-то включением по умолчанию, как я предполагал. Я исправил проблему, добавив include / etc / nginx / proxy_params в каждое из моих местоположений с помощью proxy_pass. Этот "proxy_set_header Host $ http_host;" вещь критическая.

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

Вот мои результирующие блоки местоположения в каждом блоке сервера:

location ~ /\.  { deny all; }

# Serve up the static files through nginx 
# This provides speed improvements
location ~.*\.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|html|htm|txt|js|css|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso|ico)$ {
  expires 7d;
  try_files $uri @apache;
}

# Try it in the local Apache on port 8081
location / {
  proxy_pass http://127.0.0.1:8081;
  include /etc/nginx/proxy_params;
}

location @apache {
  proxy_pass http://127.0.0.1:8081;
  include /etc/nginx/proxy_params;
}
0
ответ дан 24 November 2019 в 08:32

Теги

Похожие вопросы