请问nginx的配置文件nginx.conf在哪里?

我在阿里云ubuntu上安装了nginx,现在我发现好几个地方都有nginx.conf文件,我百度了很多方法,尝试了运行 ps -ef | grep nginx 结果显示如下:

root@iZuf6flak68jcii4kf10hpZ:~# ps -ef | grep nginx
root      8329     1  0 Mar07 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody    8330  8329  0 Mar07 ?        00:00:00 nginx: worker process
root     12684 12668  0 15:55 pts/1    00:00:00 grep --color=auto nginx

有的人说这里/usr/local/nginx/conf/nginx.conf就是配置文件
但是我有运行了nginx -t结果是这样的:

root@iZuf6flak68jcii4kf10hpZ:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

有的回答又说这里/etc/nginx/nginx.conf是配置文件,所以我现在很迷惑到底哪个才是nginx的配置文件?

新手刚接触nginx表示很懵逼啊

阅读 25.8k
10 个回答

应该是安装方式不同导致的,使用 wget 安装的配置文件在 /usr/local/nginx/conf,使用 yum 安装的配置文件在 /etc/nginx下。
你可以分别使用这两种方式安装看下路径

看你运行的是哪个了,你运行的是/usr/local/nginx/sbin/nginx 的ngixn所以出现了第一个现象,ngixn -c 的意思是指定运行的cofing的位置,也就是说现在运行的配置文件是第一个位置。但你ngixn命令绑定的ngixn服务的config不在第一个位置,所以出现了第二个现象。

nginx的配置文件是可以多个的,你看/etc/nginx/nginx.conf 这个应该是最初始的,include语句把其它配置文件引入进来。

新手上路,请多包涵

/usr/local下的才是你正在使用的配置文件,/etc/nginx那个只是默认的配置, nginx -t 如果没有加-c指定配置文件,则测试的是默认配置文件

默认配置文件路径

/etc/nginx/nginx.conf

这个文件里可能会有引用,比如

include /etc/nginx/conf.d/*.conf;

那么实际上你的项目配置文件就是在/etc/nginx/conf.d/这个文件夹下的所有.conf文件;
一般一个项目(域名)配一个文件,比如你的域名是www.baidu.com,那么你的配置文件就可以叫

/etc/nginx/conf.d/www.baidu.com.conf

root@iZuf6flak68jcii4kf10hpZ:~# ps -ef | grep nginx
root 8329 1 0 Mar07 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody 8330 8329 0 Mar07 ? 00:00:00 nginx: worker process
root 12684 12668 0 15:55 pts/1 00:00:00 grep --color=auto nginx

说明 当前使用的 nginx 进程是 /usr/local/nginx/sbin/nginx 这样启动的。
使用的配置文件就是 /usr/local/nginx/conf/nginx.conf
nginx 这个命令是可以指定配置文件的。

因为你的系统还有一个默认的 nginx ,所以你执行 nginx -t 会看到这样的结果
root@iZuf6flak68jcii4kf10hpZ:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

所以你不能这样执行,应该执行 /usr/local/nginx/sbin/nginx -t
为了 能直接使用 nginx -t 你应该把你安装的 nginx 加到 PATH 里面

如果是通过 apt install nginx 安装的,查看 /etc/nginx/default.conf 的内容。include 后面的是引入进来的配置,可以是单个文件或者文件夹

linux下安装方式多样,默认配置文件的位置也有好几个地方,nginx -t可以查看当前使用的nginx配置文件地址;locate nginx.conf可以查看所有的nginx.conf; systemctl status nginx查看nginx当前的状态;启动nginx时可以使用-c配置项指定配置文件 sudo nginx -c /etc/nginx/nginx.conf

[mh2y@tx ~]$ locate nginx.conf
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default
[mh2y@tx ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[mh2y@tx ~]$ systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-03-20 17:46:05 CST; 6 days ago
 Main PID: 1114 (nginx)
   CGroup: /system.slice/nginx.service
           ├─1114 nginx: master process /usr/sbin/nginx
           └─1117 nginx: worker process

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
[mh2y@tx ~]$

nginx服务相关的操作可以不必使用systemctlservice,可以直接使用

nginx # 直接启动 
nginx -s reload # 重启

使用ngint -T一下就出来了。

使用nginx -t 可以查看。这个命令是这个意思:nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
可以看下nginx的相关文档 https://wizardforcel.gitbooks...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏