私のnginxが実際に使用しているnginx.confファイルを見つけます


130

nginxの2つの異なるバージョンがインストールされているクライアントのサーバーでの作業。そのうちの1つはbrewパッケージマネージャー(そのosxボックス)でインストールされ、もう1つはnginxパッケージのMakefileでコンパイルおよびインストールされたようです。サーバーですべてのnginx.confファイルを検索しましたが、これらのファイルのいずれも、サーバーでnginxを起動したときにnginxが実際に使用しているパラメーターを定義していません。知らないnginx.confファイルはどこにありますか?

回答:


245

nginx -tコマンドラインを実行すると、テストが発行され、出力がファイルパスとともに構成ファイルに追加されます(エラーメッセージまたは成功メッセージが表示されます)。


33
% ps -o args -C nginx
COMMAND
build/sbin/nginx -c ../test.conf

nginxが-cオプションなしで実行された場合、-Vオプションを使用して、標準以外の値に設定された構成引数を見つけることができます。その中であなたにとって最も興味深いのは:

--prefix=PATH                      set installation prefix
--sbin-path=PATH                   set nginx binary pathname
--conf-path=PATH                   set nginx.conf pathname

1
コマンドを実行しようとしましたが、うまくいきませんでした。2番目のアントワーが機能します
2015年

32

どちらnginx -tnginx -Vデフォルトのnginxの設定ファイルのパスをプリントアウトします。

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

$ nginx -V
nginx version: nginx/1.11.1
built by gcc 4.9.2 (Debian 4.9.2-10)
built with OpenSSL 1.0.1k 8 Jan 2015
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf ...

必要に応じて、次の方法で構成ファイルを取得できます。

$ nginx -V 2>&1 | grep -o '\-\-conf-path=\(.*conf\)' | cut -d '=' -f2
/etc/nginx/nginx.conf

他の設定ファイルをロードした場合でも、デフォルト値が出力されます。


ps aux 現在読み込まれているnginx設定ファイルが表示されます。

$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        11  0.0  0.2  31720  2212 ?        Ss   Jul23   0:00 nginx: master process nginx -c /app/nginx.conf

たとえば、実際に構成ファイルを取得するには、次のようにします。

$ ps aux | grep "[c]onf" | awk '{print $(NF)}'
/app/nginx.conf

7
which nginx

使用されているnginxのパスを提供します


編集(2017年1月18日)

この回答に対するウィルパルマーのコメントのおかげで、私は以下を追加しました...

HomeBrewなどのパッケージマネージャーを介してnginxをインストールした場合...

which nginx

使用されているnginxへの正確なパスを提供しない場合があります。ただし、それを使用してそれを見つけることができます

realpath $(which nginx)

@Daniel Liが述べたように

あなたは彼の方法でnginxの設定を取得できます

または、これを使用することもできます。

nginx -V

1
「どれ」はほとんどのUnixベースのシステムで動作します。私はUbuntuでそれをタイプしただけで、私の心を失わなかったことを確認しました。
tqwhite 2016年

1
ああ、すごい、修正しました。答えをすぐに修正します。ありがとう
クレイグウェイン

1
which nginx現在のユーザー(現在のユーザーでなく、現在のシェル)のnginx のデフォルトパスのみを表示します。nginxが「使用されている」パスは表示されません。
Will Palmer

2

他のすべての回答は役に立ちますが、nginxオンにPATHなっていないcommand not foundnginx場合役に立たない可能性があるため、実行しようとすると次のようになります

Debian 7 Wheezyにnginx 1.2.1があります。nginx実行可能ファイルはon PATHではないので、最初に見つける必要がありました。すでに実行されていたので、を使用してにあるps aux | grep nginxことがわかりました。/usr/sbin/nginxそのため、を実行する/usr/sbin/nginx -t必要がありまし

デフォルト以外の構成ファイル(つまり、ではない/etc/nginx/nginx.conf)を使用する場合は、次の-cパラメーターを指定して実行します/usr/sbin/nginx -c <path-to-configuration> -t

として実行するroot必要がある場合もあります。そうしない、nginxがログなどを開く権限を持っていない可能性があるため、コマンドが失敗します。


1

@Daniel Liの回答に加えて、Valetを使用したnginxインストールでもVelet構成を使用します。これは「/usr/local/etc/nginx/valet/valet.conf」にあります。nginx.confファイルは、このValet confファイルをインポートします。必要な設定がValetファイルにある場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.