Answers:
% ps -o args -C nginx
COMMAND
build/sbin/nginx -c ../test.conf
如果运行的nginx没有该-c
选项,那么您可以使用该-V
选项找出设置为非标准值的configure参数。其中最有趣的是:
--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年1月18日)
感谢Will Palmer对这个答案的评论,我添加了以下内容...
如果您通过HomeBrew等软件包管理器安装了nginx,则...
which nginx
可能无法为您提供正在使用的nginx 的确切路径。但是您可以使用找到它
realpath $(which nginx)
正如@Daniel Li所提到的
你可以通过他的方法获得nginx的配置
或者,您可以使用以下方法:
nginx -V
which nginx
仅显示当前用户的nginx 的默认路径(甚至不显示当前用户-当前shell)。它绝对不会显示“正在使用” nginx的路径。
所有其他答案都是有用的,但是如果没有打开,它们可能对您没有帮助nginx
,PATH
因此您command not found
在尝试运行时会遇到问题nginx
:
我在Debian 7 Wheezy上安装了nginx 1.2.1,nginx
可执行文件未打开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可能没有打开例如日志的权限,因此该命令将失败。
除了@Daniel Li的答案,带有Valet的nginx安装也将使用Velet配置,可以在“ /usr/local/etc/nginx/valet/valet.conf”中找到。nginx.conf文件将导入此Valet conf文件。您所需的设置可能在Valet文件中。