Имеем два ip адреса, с которых нужно пускать клиентов независимо от текущего режима сайта (для примера 67.81.43.124 и 67.23.44.5). Чтобы для включения maintenance режима не нужно было дергать администратора, будем считать наличие файла maintenance.flag в корне сайта, признаком включения maintenance режима.
Я использую nginx из Debian Squeeze и примеры будут ориентированы на него.
Для поддержки нового режима я добавил несколько секций в /etc/nginx/sites-enabled/www.example.com
geo $show_maintenance_page {
    default yes;
    67.81.43.124 no;
    67.23.44.5 no;
}
server {
    listen 80;
    server_name www.example.com example.com;
    if ( -f /var/www/www.example.com/maintenance.flag ) {
        set $maintenance y;
    }
    if ( $show_maintenance_page = yes ) {
        set $maintenance y$maintenance;
    }
    if ( $maintenance = yy ) {
        return 503;
    }
    error_page 503 @maintenance;
    location @maintenance {
        root /var/www/maintenance;
        rewrite ^(.*)$ /maintenance.html break;
    }
    # All other config
}
Содержимое /var/www/maintenance у меня существует еще с прежнего варианта, который я описывал ранее. Теперь чтобы перевести сайт в режим maintenance нужно создать файл maintenance.flag в корне сайта (/var/www/www.example.com). После этого всем посетителям будет выдавать maintenance страницу, а для тех, кто заходит с адресов 67.81.43.124 или 67.23.44.5 будет доступен сайт. Чтобы выключить maintenance достаточно удалить файл maintenance.flag.
Комментариев нет:
Отправить комментарий