@47911

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

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

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

Я спрашиваю про готовое решение. Ибо думаю что подобное надо реализовывать через скрипт на php-fpm, который сначала пинует сервер1, и если не получает правильный ответ(открытие страницы) - пытается прощупать сервер2, и в случае успеха - открывать сервер2.
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ответы на вопрос 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, например.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы