一台机器上启动两个nginx实例,主要是端口冲突问题,另外,如果一个是通过编译安装,另一个是拷贝的,那么还需要修改静态文件根路径。

    这里,我第一个nginx是通过源码编译安装,安装目录是默认的/usr/local/nginx。

    第二个nginx是拷贝/usr/local/nginx到/root/目录下,所以第二个nginx目录就是/root/nginx。

    这里主要需要修改第二个nginx的端口,假定我们设置为9000。

nginx只启动一个 启动两个nginx_nginx

    这里,为了区别第一个nginx,我们修改html下的index.html静态页面,内容稍作修改:

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx2!</h1>
</body>
</html>

绝对路径。 

    我们通过测试命令查看配置文件:

nginx只启动一个 启动两个nginx_user root_02

    我们第一次使用的是相对路径conf/nginx.conf,这个指定并没有生效,而是使用的默认第一个nginx配置文件。 这个时候,如果你继续启动,那么它会报错,说80端口已经被占用了。

    nginx启动指定配置文件,路径一定要使用绝对路径。

    当我们高高兴兴通过绝对路径指定配置文件启动,之后访问,发现访问的是第一个nginx的首页。这时候,需要修改静态文件根路径root,配置这样修改:

location / {
    root   /root/nginx/html/;
    index  index.html index.htm;
}

     之后,再启动,访问首页,403:

nginx只启动一个 启动两个nginx_nginx_03

     接着修改nginx.conf配置, 第一行的配置注释打开,并修改user nobody为 user root; 

    最后访问成功:

nginx只启动一个 启动两个nginx_user root_04

    这样,一波三折的双nginx启动就完成了。 

    最后,通过查看进程来看看一些细节问题:

nginx只启动一个 启动两个nginx_user root_05

    第一个nginx工作进程,使用的nobody启动,另一个默认使用的是root,所以上面403的问题需要修改user root;配置文件这里通过绝对路径指定,它在显示的时候也列出来了。 

    总结一下注意事项:

     1)nginx启动指定配置文件需要使用绝对路径。

     2)静态资源配置根路径,第二个配置需要使用绝对路径。使用相对路径,或者默认值,访问的还是第一个nginx静态文件。

      3)nginx访问出现403,需要修改nginx.conf配置的user属性值,改为root。

      4) 修改配置之后,让配置生效,可以直接使用命令:

sbin/nginx -c /root/nginx/conf/nginx.conf -s reload