
ウェブサイト(他の場所で実行)のキャッシュを処理するために 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
特に権限に敏感なディレクトリでアクションを実行する場合は、安全でない FTP を使用しないでください。代替手段は次のとおりです。
通常のユーザーで SSH を使用し、
sudo
nginx-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
cron を使用して、定期的に の存在を確認するスクリプトを実行します。この特別なファイルは、
FTPSSH (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