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


130

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

Answers:


244

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


33
% 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

1
我试图运行的命令,但他们并没有为我工作。第二前面回答的作品
Revious

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日)

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

如果您通过HomeBrew等软件包管理器安装了nginx,则...

which nginx

可能无法为您提供正在使用的nginx 的确切路径。但是您可以使用找到它

realpath $(which nginx)

正如@Daniel Li所提到的

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

或者,您可以使用以下方法:

nginx -V

1
“哪个”可在大多数基于Unix的系统上使用。我只是在Ubuntu上输入了它,以确保我没有迷失方向。
tqwhite

1
哦,我的立场是正确的。立即修改答案。谢谢
克雷格·韦恩

1
which nginx仅显示当前用户的nginx 的默认路径(甚至不显示当前用户-当前shell)。它绝对不会显示“正在使用” nginx的路径。
Will Palmer

2

所有其他答案都是有用的,但是如果没有打开,它们可能对您没有帮助nginxPATH因此您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可能没有打开例如日志的权限,因此该命令将失败。


1

除了@Daniel Li的答案,带有Valet的nginx安装也将使用Velet配置,可以在“ /usr/local/etc/nginx/valet/valet.conf”中找到。nginx.conf文件将导入此Valet conf文件。您所需的设置可能在Valet文件中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.