Nginxの2つの異なるバージョンがインストールされているクライアントのサーバーでの作業。それらの1つはbrewパッケージマネージャー(osxボックス)でインストールされ、もう1つはnginxパッケージのMakefileでコンパイルおよびインストールされたようです。サーバー上のすべてのnginx.confファイルを検索しましたが、これらのファイルはどれも、nginxがサーバー上で起動するときに実際に使用するパラメーターを定義していません。私が知らないnginx.confファイルはどこにありますか?
コマンドラインでnginx -t
を実行すると、テストが発行され、出力にファイルパスが設定ファイルに追加されます(エラーメッセージまたは成功メッセージが表示されます)。
% 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
nginx -t
とnginx -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
which nginx
使用されているnginxのパスを提供します
編集(2017-Jan-18)
この答えに対するウィル・パーマーのコメントのおかげで、私は以下を追加しました...
HomeBrewなどのパッケージマネージャーを介してnginxをインストールした場合...
which nginx
使用されているnginxへのEXACTパスを提供しない場合があります。ただし、それを使用して見つけることができます
realpath $(which nginx)
@Daniel Liが述べたように
彼の方法でnginxの設定を取得できます
または、これを使用することができます:
nginx -V
@Daniel Liの回答に加えて、Valetを使用したnginxのインストールではVelet構成も使用します。これは「/usr/local/etc/nginx/valet/valet.conf」にあります。 nginx.confファイルは、このValet confファイルをインポートします。必要な設定は、Valetファイルに含まれている場合があります。
私の場合は、Debian 7 Wheezyのnginx 1.2.1で、nginx
はPATH
になく、/usr/sbin/nginx
にあるので、追加する必要があるので、run /usr/sbin/nginx -t
が必要です。
デフォルト以外の構成ファイル(つまり、/etc/nginx/nginx.conf
ではない)を使用する場合は、-c
パラメーターを使用して実行します:/usr/sbin/nginx -c <path-to-configuration> -t
。
root
として実行が必要な場合もあります。そうしないと、nginxがログなどを開く権限を持たないため、コマンドが失敗します。