Делаем заглушку на удалённый сайт средствами nginx

Answer

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five http://jquery2dotnet.com/ centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

И так, дано
сайт лежит на сервере с адресом 192.168.10.10
выделеный сервер на котором будет заглушка имеет адрес 192.168.20.20

Первым делом устанавливаем nginx. Добавим его репу

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

и устанавливаем

yum install nginx

стартуем

systemctl start nginx
systemctl enable nginx

Вот и всё. Теперь если перейти на 192.168.20.20 должна открыться тестовая страница nginx. А мы тем временем перейдём к настройке проксирования. Открываем файл конфига (у меня это по умолчанию default.conf)

nano /etc/nginx/conf.d/default.conf

и приводим его к такому виду:
server {
    listen       80;
    server_name  localhost;
    charset utf-8;
    
    location / {
        proxy_pass $scheme://192.168.10.10:80$request_uri;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        if (-f /etc/nginx/maintenance2.file) { 
            return 503;
        }
    }
    
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
Остановлюсь на некоторых местах подробнее: 

listen       80; - порт который мы слушаем. 
charset utf-8; - кодировка сайта. у меня если не выставить - заглушка была кракозябрами
proxy_pass $scheme://192.168.10.10:80$request_uri; - собственно строчка которая отвечает за проксирование. Не забываем вконце $request_uri, в противном случае будет проксироваться только главная страница сайта

if (-f /etc/nginx/maintenance.file) { 
            return 503;
        }

собственно отвечает за то в каком случае выводить страницу ошибки. Тут сказано что при нахождении файла, выдавать ошибку 503.

error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

это отвечает за то какой файл выдавать при той или иной ошибке и где он лежит

Вот и всё. Далее настраиваем скрипт который пингует наш сервер с сайтом, и если пинг пропадает - создаёт файл. nginx видит файл и ставит заглушку. во всех остальных случаях просто проксирует сайт. 

Поделись с друзьями

Имя:*
E-Mail: