FTPを使用してNGINXキャッシュをクリアする

FTPを使用してNGINXキャッシュをクリアする

ウェブサイト(他の場所で実行)のキャッシュを処理するために NGINX サーバーをセットアップしています。

うまく機能しますが、管理者がバックオフィスからキャッシュをフラッシュするオプションを用意する必要があります。 FTP を使用して、キャッシュ ディレクトリからすべてのファイルを削除するだけでこれを処理することを検討していました。

キャッシュを次のように設定しました:

proxy_cache_path /var/cache/nginx/my_site levels=1:2 keys_zone=MY_SITE:8m max_size=2048m inactive=720m;

ただし、ファイルは権限 700 で保存されます。NGINX にグループ (770) にも権限を与えるように指示するにはどうすればよいでしょうか? 作成した FTP ユーザーをそのグループに追加します。

フラッシングに対処するための他の提案があれば大丈夫です(私は読んだStackOverflowのスレッドバックオフィスは別の場所にあるため、リモート テクノロジーを使用する必要があります。

答え1

盗むアイデアを説明するVバートそして 詳細情報を送信

特に権限に敏感なディレクトリでアクションを実行する場合は、安全でない FTP を使用しないでください。代替手段は次のとおりです。

  1. 通常のユーザーで SSH を使用し、sudonginx-cache クリアを実行する特定のスクリプトに権限を与えます。たとえば、このスクリプトを に配置します/opt/clear-cache.sh

    #!/bin/sh
    rm -rf /path/to/nginx-cache
    

    安全のため、忘れずに実行してください

    chown root:root h/opt/clear-cache.sh && chmod 700 /opt/clear-cache.sh
    

    次に、visudo以下の行を追加します。/etc/sudoers

    backofficeuser ALL=(root)  /opt/clear-cache.sh
    
  2. cron を使用して、定期的に の存在を確認するスクリプトを実行します。この特別なファイルは、 FTP SSH (SFTP/SCP)flag-file経由で作成できます。が存在する場合、スクリプトは nginx-cache をクリアします。サンプル スクリプト。flag-file

    #!/bin/sh
    
    FILE=/path/to/special/file
    
    if [ ! -f $FILE ]
    then
        rm $FILE
        rm -rf /path/to/nginx/cache/*
    fi
    

    次にそれをcronに追加しますsudo crontab -e

    * * * * * /path/to/myscript.sh
    

関連情報