25

私はUbuntuでnginxを自分でコンパイルしました。nginxを-cnginx.confパラメーターで開始します。nginx.confファイルで、エラーログをオフにしようとしましたが失敗しました。

error_log /dev/null crit;

それでもエラーメッセージが表示されます:nginx:[アラート]はエラーログファイルを開くことができませんでした:open() "/usr/nginx/logs/error.log"が失敗しました(2:そのようなファイルまたはディレクトリはありません)

このログをオフにしたり、場所を変更したりするにはどうすればよいですか?

4

6 に答える 6

22

エラーログを無効にするための構文は問題ありませんが、ドキュメントには、構成が読み取られる前にデフォルトのログファイルが使用されると記載されています。(これは、構成にエラーがあることを他の方法でどのように通知するので、合理的と思われます)

nginxを実行するユーザーに適切な権限を使用して、このファイルを手動で作成してみてください。または、サーバーをrootとして起動してみてください。

于 2012-11-14T13:21:01.227 に答える
17

nginxを起動するときに-pパラメーターを使用してこの問題を解決しました。例:

/home/ubuntu/nginx/sbin/nginx -c /home/ubuntu/nginx/conf/nginx.conf -p /home/ubuntu/nginx

これにより、設定で指定されたログパスの前にプレフィックスディレクトリが追加されます。

于 2013-06-15T19:22:39.133 に答える
4

このconfigureパラメーターを使用してこれを解決しました:

./configure --prefix="$HOME/nginx" --error-log-path=/dev/stderr

このnginxをデーモンとして使用することはなく、常にシェルで実行するため、エラーをstderrに記録するのは理にかなっています。

于 2015-09-10T07:21:54.953 に答える
1

-pプレフィックスを指定して問題を解決することはできません。これは、構成ファイル内のディレクティブにのみ適用されるためです。RickyAがすでに指摘したように、問題は、nginxが構成を開く前でも開きたいコンパイル済みのエラーログがあることです。明らかな理由から、コンパイルされたエラーログの権限を変更することは理想的ではありません。

回避策は、コマンドラインで構成としてエラーログを指定することです。

$ nginx -p . -g 'error_log error.log;'

また

$ nginx -p . -g 'error_log stderr;'

あなたはまだ[アラート]を受け取りますが、少なくともそれは私がUbuntuで非ルートとしてnginxを開始することを可能にしました。

于 2014-06-26T05:56:13.860 に答える
0

nginx.orgメーリングリスト(以下に引用)のこの投稿によると、%%ERROR_LOG_PATH%%はコンパイルオプションとして設定され、起動時にすぐにチェックされ、「開くことができませんでした」というアラートが発生します。プレフィックス(を使用-p)を指定すると、アラートを抑制するのに役立つ場合がありますが、コンパイル時に相対パスとしてが指定されている場合に限ります。%%ERROR_LOG_PATH%%

現在の実行可能ファイルでどのように指定されているかを確認するには、

nginx -V 2>&1 | grep -oE 'error-log-path=\S*'

これが、@ Michaelによって提案されたソリューションが機能するものもあれば、機能しないものもある理由です。

変更ログを参照してください。

nginx0.7.53での変更

..。

*)変更:-error-log-pathによって設定されたログが最初から作成されるようになりました。

*)機能:起動エラーと警告がerror_logとstderrに出力されるようになりました。

..。

現在、開始時にエラーをログに記録するために常に使用されるerror_log値でコンパイルされます(そしてnginxがそれを開くことができない場合は警告を発します)。設定ファイルが読み取られると、代わりにconfigのerror_logが使用されます。

プレフィックスを基準にしたerror_logパスを使用してnginxをコンパイルした場合は、-pスイッチを使用して起動error_logをオーバーライドできるはずです。

マキシム・ドゥニン

于 2018-01-02T21:55:44.700 に答える
-1

コマンドラインパラメータを使用する必要はありません。少なくともエラーメッセージが発生する前に、error_logディレクティブをnginx.confの最上部に追加するようにしてください。

2016年1月からのnh2のコメントは、このオプションが少なくとも2、3年は利用可能であったことを示唆しています。私はそれが機能することを確認でき、それはそれほど面倒ではありません。nginx.confをカスタマイズすると、他の方法よりも、パッケージ化されたnginxインストールの更新で問題が発生する可能性が低くなります。

于 2018-04-04T17:13:29.920 に答える