У меня есть пара подсистемы балансировки нагрузки перед 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;
}
Файл 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;
}