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

时间:2013-11-11 15:33:14

标签: macos nginx sysadmin

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

6 个答案:

答案 0 :(得分:202)

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

答案 1 :(得分:31)

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

如果在没有-c选项的情况下运行nginx,则可以使用-V选项找出设置为非标准值的configure参数。其中最有趣的是:

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

答案 2 :(得分:21)

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

答案 3 :(得分:6)

which nginx

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

编辑(2017年1月18日)

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

如果您通过包管理器(如HomeBrew ...

)安装了nginx
which nginx

可能无法为您提供正在使用的nginx的 EXACT 路径。但是你可以使用

找到它
realpath $(which nginx)

和@Daniel Li提到

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

或者你可以使用它:

nginx -V

答案 4 :(得分:1)

除了@Daniel Li的回答之外,使用Valet的nginx安装也会使用Velet配置,这可以在" /usr/local/etc/nginx/valet/valet.conf&中找到。 #34 ;. nginx.conf文件将导入此Valet conf文件。您需要的设置可能在Valet文件中。

答案 5 :(得分:1)

在我的情况下,我将在Debian 7 Wheezy上添加nginx 1.2.1,nginx不在PATH上,它位于/usr/sbin/nginx上,所以我需要运行/usr/sbin/nginx -t

如果要使用非默认配置文件(即不是/etc/nginx/nginx.conf),请使用-c参数:/usr/sbin/nginx -c <path-to-configuration> -t运行它。

您可能还需要root身份运行它,否则,nginx可能没有打开例如日志的权限,因此该命令将失败。