@47911

Перенаправление на другой сервер, если первый не отвечает?

Здравствуйте. Есть сервера и сервер2.
Нужно: если на сервере1(nginx + php-fpm сайт работает) сайт не открывается - открывать его с сервера2. Как?

ДоменноеИмя.ру перенаправленно на сервер1. На сервер2 разложен сайт-бэкап-копия.
Нужен ли 2й домен?

Я спрашиваю про готовое решение. Ибо думаю что подобное надо реализовывать через скрипт на php-fpm, который сначала пинует сервер1, и если не получает правильный ответ(открытие страницы) - пытается прощупать сервер2, и в случае успеха - открывать сервер2.
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ответы на вопрос 2
@dronmaxman
VoIP Administrator
Ставим nginx и настраиваем его как прокси.

http {
    upstream backend {
        server primary_server.example.com;  # Основной сервер
        server backup_server.example.com backup;  # Резервный сервер
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            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;
        proxy_read_timeout 10s; # Тайм-аут ожидания ответа от сервера
        proxy_send_timeout 10s; # Тайм-аут на отправку данных к серверу
        proxy_next_upstream error timeout http_502 http_503 http_504; # Условия перехода на резервный сервер
        }
    }
}


1. upstream backend - блокирует определение пула серверов для балансировки нагрузки.
2. server primary_server.example.com - это основной сервер, на который Nginx будет отправлять запросы.
3. server backup_server.example.com backup - это резервный сервер, на который запросы будут направляться только тогда, когда основной сервер недоступен.
4. proxy_pass - используется для передачи запросов к пулу серверов.
Ответ написан
Комментировать
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Делается без скриптов с помощью апстримов nginx. Nginx, разумеется, должен стоять перед вашими серверами.

Можно ещё через Cloudflare, например.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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