find我的nginx实际使用的nginx.conf文件

在安装有两个不同版本的nginx的客户端服务器上工作。 我认为其中一个已经安装了brew包pipe理器(它是一个osx盒子),另外一个似乎是用nginx打包的Makefile进行编译和安装的。 我search了服务器上的所有nginx.conf文件,但是这些文件都没有定义nginx在服务器上启动它时实际使用的参数。 我不知道nginx.conf文件在哪里?

通过命令行运行nginx -t会发出一个testing,并将带有文件path的输出附加到configuration文件(带有错误或成功消息)。

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

如果nginx运行时没有使用-c选项,那么你可以使用-V选项来找出被设置为非标准值的configuration参数。 其中最有趣的是你:

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

nginx -tnginx -V都会打印出默认的nginxconfiguration文件path。

 $ 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 ... 

如果你愿意,你可以通过以下方式获得configuration文件:

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

即使你已经加载了一些其他的configuration文件,他们仍然会打印出默认值。


ps aux会显示当前加载的nginxconfiguration文件。

 $ 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 

所以你可以实际得到configuration文件,例如:

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

会给你正在使用的nginx的path

正如@Daniel Li所说的

你可以通过他的方法获得nginx的configuration

或者你可以使用这个:

 nginx -V 

除了@Daniel Li的回答之外,与Valet的nginx安装也将使用Veletconfiguration,这在“/usr/local/etc/nginx/valet/valet.conf”中find。 nginx.conf文件将会导入这个代客configuration文件。 您需要的设置可能在代客文件中。