显示nginx维护页面

    • nginxでメンテナンスページを表示する実験をしてみました (参考サイトをDockerで試してみました)

nginxの設定ファイルには触れずに、メンテナンスページの表示/非表示を切り替える
指定したIPはメンテナンスページを表示しない

Dockerは別途インストールしてください

直接启动Nginx

$ docker pull nginx:latest
$ docker run --rm --name nginx-mainte -p 80:80 nginx:latest
    • ブラウザでアクセス

http://
Welcome to nginxページが表示される

更改索引页面

    nginxのコンテナに乗り込む
$ docker exec -it nginx-mainte /bin/bash
    ドキュメントルートの確認
$ cat /etc/nginx/conf.d/default.conf

・・・
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
・・・

index.htmlを変更

vi無かったので無理くり・・

sed -i -e 's/nginx\!/nginx\!\!/g' /usr/share/nginx/html/index.html
    • ブラウザでアクセス

http://
nginx! ⇒ nginx!!

制作/确认维护页面

    • ホスト側で

Nginxコンテナのindex.htmlを流用し、メンテナンスページを作成する

$ docker cp nginx-mainte:/usr/share/nginx/html/index.html maintenance.html
$ vim maintenance.html
htmlを適宜編集(パーミッションも)
    nginxコンテナのドキュメントルートにメンテナンスページを送り込みつつ起動
ctrl + c でコンテナ停止
$ docker run --rm --name nginx-mainte -p 80:80 -v `pwd`/maintenance.html:/usr/share/nginx/html/maintenance.html  nginx:latest
    • ブラウザでアクセス

http:///maintenance.html
メンテナンスページが表示される

切换维护页面的显示/隐藏设置

    • ホスト側で

mainte.confを作る

/etc/nginx/conf.d/default.confを流用した(コメントアウトされている部分は削除)

geo $allow_ip_flag {
    default 0;
    x.x.x.x/24 1; # メンテナンス中もアクセス許可するIPを設定
}
server {
    listen       80;
    server_name  localhost;
    error_page 503 @maintenance;
    error_page   500 502 504  /50x.html;

    set $maintenance false;

     if ( -e /var/www/nginx/maintenance.txt ) {
        set $maintenance true;
    }

    if ( $allow_ip_flag ) {
        set $maintenance false;
    }

    if ( $maintenance = true ) {
        return 503;
    }

    location / {
         root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location @maintenance {
        internal;
        expires 0;
        root  /var/www/nginx;
        rewrite ^(.*)$ /maintenance.html break;
    }

    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

mainte.confをホスト側からnginxコンテナに送り込みつつ起動

ctrl + c でコンテナ停止
$ docker run --rm --name nginx-mainte -p 8080:80 -v `pwd`/maintenance.html:/var/www/nginx/maintenance.html -v `pwd`/mainte.conf:/etc/nginx/conf.d/default.conf nginx:latest

维护页面开启

    nginxのコンテナに乗り込んで
$ touch /var/www/nginx/maintenance.txt
    • ブラウザでアクセス

http://:8080
許可IP:Welcome to nginxページが表示される
非許可IP:メンテナンスページが表示される

维护页面已关闭。

    nginxのコンテナに乗り込んで
$ rm /var/www/nginx/maintenance.txt

请参考

    • DockerHub Nginx

 

    • docker上のnginxのドキュメントルート

 

    Nginxでメンテナンスモード
广告
将在 10 秒后关闭
bannerAds