Nginxサーバーを最適化しようとしています。 CSS、JS、HTMLなどの事前圧縮gzip静的ファイルを提供するためにGzip_Static_Moduleを有効にしました。
Nginx Wikiは、圧縮されたファイルと圧縮されていないファイルのタイムスタンプが一致すると言います。それで、Gzip圧縮の前にこれらのファイルに触れようとします。
*.gz
以下を使用して、これらの静的ファイルに触れて生成しようとします。
$ su -c "find . -type f -name "*.css" -size +1024b -exec sh -c "touch {} \
&& gzip -9v < {} > {}.gz" \;"
$ su -c "find . -type f -name "*.js" -size +1024b -exec sh -c "touch {} \
&& gzip -9v < {} > {}.gz" \;"
$ su -c "find . -type f -name "*.html" -size +1024b -exec sh -c "touch {} \
&& gzip -9v < {} > {}.gz" \;"
ただし、「ユーザー{}が見つかりません」というエラーが発生します。
誰も上記のコマンドの問題を特定するのに役立ちますか?圧縮されていないファイルのタイムスタンプが変更されるたびに(たとえば、Cronjob)* .gzを自動的に生成するより良い方法はありますか?
ベストアンサー1
su -c ...
実行したいコマンドに二重引用符が含まれているため、引用の問題があるようです。内容全体を一重引用符で囲むことをお勧めします。
$ su -c 'find . -type f -name "*.css" -size +1024b -exec sh -c "touch {} && \
gzip -9v < {} > {}.gz" \;'
二重引用符を含むエントリをエスケープすることもできますが、これはしばしばデバッグを混乱させるので、これを避けたいのですが、スタイル/好みの好みに応じた別のオプションです。