找到我的 nginx 实际使用的 nginx.conf 文件

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

177950 次浏览

通过命令行运行 nginx -t将发出一个测试,并将带有文件路径的输出附加到配置文件(带有错误或成功消息)。

% 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
which nginx

将为您提供正在使用的 nginx 的路径


编辑(2017-1-18)

感谢 Will Palmer 对这个答案的评论,我添加了以下内容..。

如果您已经通过诸如 HomeBrew 之类的软件包管理器安装了 nginx..。

which nginx

可能不会给你正在使用的 nginx 的 没错路径

realpath $(which nginx)

正如@Daniel Li 所提到的

你可以通过他的方法得到 nginx 的配置

或者你可以用这个:

nginx -V

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

除了@Daniel Li 的回答之外,Valet 的 nginx 安装也将使用 Vlet 配置; 这在 /usr/local/etc/nginx/valet/valet.conf中可以找到。nginx.conf文件将导入这个 Valet conf 文件。

您需要的设置可能在“代客泊车”文件中。

所有其他的答案都是有用的,但如果 ABC0不在 ABC1上,所以当你试图运行 ABC0时,你得到的是 command not found:

我在 Debian7Wheezy 上有 nginx1.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 可能没有打开示例日志的权限,因此命令将失败。

MacOS 中 nginx.conf 的路径

/usr/local/etc/nginx/nginx.conf