乐闻世界logo
搜索文章和话题

Nginx 如何定位实际使用的 conf 文件位置?

9 个月前提问
5 个月前修改
浏览次数102

6个答案

1
2
3
4
5
6

在Nginx中,定位实际正在使用的配置文件(nginx.conf)可以通过几种方式完成。

  1. 查看默认配置文件位置 默认情况下,Nginx的配置文件通常位于以下几个地方之一:

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

    这取决于Nginx是如何安装的。大多数基于包管理的安装(例如,使用APT或YUM)会将配置文件放在/etc/nginx/目录下。

  2. 使用Nginx命令 可以使用Nginx的命令行参数-t查看它认为的配置文件路径,这将输出完整的配置文件路径,以及配置文件中的任何错误。

    shell
    nginx -t

    这个命令不仅会显示你配置文件的位置,还会进行语法检查。

  3. 查看Nginx进程 通过查看Nginx的进程信息,可以找到它使用的配置文件。可以用ps命令配合grep来做这件事:

    shell
    ps -aux | grep nginx

    在Nginx启动命令的输出中,可能会包含-c参数后面跟随的配置文件路径。

  4. 查看启动脚本 对于使用系统服务管理器(如systemd)启动Nginx的系统,可以检查服务的单位文件,找到Nginx的启动命令及其使用的配置文件。

    shell
    systemctl cat nginx

    或者,对于较旧的系统,可能需要查看启动脚本:

    shell
    cat /etc/init.d/nginx
  5. Nginx编译参数 如果你想知道在编译Nginx时指定的默认配置文件路径,可以使用以下命令查看:

    shell
    nginx -V

    该命令会输出Nginx编译时的所有参数,包括--conf-path,这里面指定了默认的配置文件路径。

综上所述,通常可以快速通过nginx -t命令来确认Nginx使用的配置文件路径,并且额外检查配置文件的语法正确性。如果需要了解更多详细信息,如编译时的配置路径或服务启动脚本,那么其他方法也非常有用。

2024年6月29日 12:07 回复

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

2024年6月29日 12:07 回复

nginx -t都会nginx -V打印出默认的 nginx 配置文件路径。

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

如果需要,您可以通过以下方式获取配置文件:

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

即使您加载了其他一些配置文件,它们仍然会打印出默认值。


ps aux会显示当前加载的 nginx 配置文件。

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

这样您实际上就可以通过以下方式获取配置文件:

shell
$ ps aux | grep "[c]onf" | awk '{print $(NF)}' /app/nginx.conf
2024年6月29日 12:07 回复

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

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

shell
--prefix=PATH set installation prefix --sbin-path=PATH set nginx binary pathname --conf-path=PATH set nginx.conf pathname
2024年6月29日 12:07 回复

which nginx

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


编辑(2017 年 1 月 18 日)

感谢威尔·帕尔默对此答案的评论,我添加了以下内容......

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

shell
which nginx

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

shell
realpath $(which nginx)

正如@Daniel Li 提到的

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

或者你可以使用这个:

shell
nginx -V
2024年6月29日 12:07 回复

所有其他答案都很有用,但如果**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 可能没有权限打开例如日志,因此该命令将失败。

2024年6月29日 12:07 回复

你的答案