一台机器上启动两个nginx实例,主要是端口冲突问题,另外,如果一个是通过编译安装,另一个是拷贝的,那么还需要修改静态文件根路径。
这里,我第一个nginx是通过源码编译安装,安装目录是默认的/usr/local/nginx。
第二个nginx是拷贝/usr/local/nginx到/root/目录下,所以第二个nginx目录就是/root/nginx。
这里主要需要修改第二个nginx的端口,假定我们设置为9000。
这里,为了区别第一个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,这里启动,我们需要通过-c指定配置文件,nginx指定配置文件有个毛病,不能设置相对路径,需要设置绝对路径。
我们通过测试命令查看配置文件:
我们第一次使用的是相对路径conf/nginx.conf,这个指定并没有生效,而是使用的默认第一个nginx配置文件。 这个时候,如果你继续启动,那么它会报错,说80端口已经被占用了。
nginx启动指定配置文件,路径一定要使用绝对路径。
当我们高高兴兴通过绝对路径指定配置文件启动,之后访问,发现访问的是第一个nginx的首页。这时候,需要修改静态文件根路径root,配置这样修改:
location / {
root /root/nginx/html/;
index index.html index.htm;
}
之后,再启动,访问首页,403:
接着修改nginx.conf配置, 第一行的配置注释打开,并修改user nobody为 user root;
最后访问成功:
这样,一波三折的双nginx启动就完成了。
最后,通过查看进程来看看一些细节问题:
第一个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