nginx в качестве обратного прокси с отказоустойчивостью
Я управляю сайтом WordPress таким образом, что мой внешний интерфейс управляется Nginx. Nginx forwards Весь динамический контент для лака и последующего перенаправления на Apache. Теперь я хочу настроить таким образом, чтобы nginx перенаправлял запрос напрямую в apache, если лак остановлен / не удался. Как мне это сделать.
1 ответ
Это можно сделать методом балансировки нагрузки. Балансировка нагрузки Nginx использует upstream
модуль. Самый простой способ - добавить блок восходящего потока в поле http в nginx.conf
файл находится в /etc/nginx/
,
http {
upstream backend {
server 127.0.0.1:8081;
server 127.0.0.1:8088;
# server Backend_Server_IP;
}
...
}
Здесь я посчитал, что лак работает на localhost
с port 8081
пока работает Apache localhost
с port 8088
, Указывать IP-адрес и номер порта для Varnish здесь не нужно, но я добавил его на всякий случай.
После этого вам просто нужно отредактировать настройку сайта, которая находится в каталоге /etc/nginx/sites-available/
, Просто откройте файл своего сайта и добавьте в него эти строки.
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
proxy_pass http://backend;
proxy_set_header Host $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;
}
Теперь сохраните его, закройте и проверьте файл конфигурации nginx на наличие синтаксической ошибки, набрав:
sudo nginx -t
Перезапустите службу nginx, если синтаксис в порядке.
sudo service nginx restart
Это будет работать как шарм. Вы можете проверить это, прекратив лаковое обслуживание, а затем посетить ваш сайт. nginx пропустит лак, если сервис лака завершился неудачей, а затем отправит свой запрос в apache:-)