15 nginx实现反向代理两个域名指向同一台nginx服务器,用户访问不同的域名显示不同的网页内容。 两个域名是http://www.baidu.com和http://www.taobao.com nginx代理服务器使用虚拟机192.168.204.131 第一步:安装两个tomcat,分别运行在8080和8081端口。 第二步:启动两个tomcat。 第三步:反向代理服务器的配置 第四步:nginx重新加载配置文件 第五步:配置域名 在hosts文件中添加域名和ip的映射关系 192.168.204.131 http://www.baidu.com 192.168.204.131 http://www.taobao.com 16 负载均衡如果一个服务由多个服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡。 可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1 17 设置nginx开机自启动(centos6.5)每次启动nginx服务都需要到安装目录下的/sbin下面,感觉挺麻烦的。 下面介绍一下如何在Linux(CentOS)系统上,设置nginx开机自启动。 1 用脚本管理nginx服务第一步:在/etc/init.d/目录下创建nginx文件,命令如下: # touch /etc/init.d/nginx 第二步:在创建的nginx文件中加入下面的内容 首先执行命令: # vim /etc/init.d/nginx 然后加下面的内容复制到nginx配置文件中
上面的脚本文件并不是自己写的,是nginx官方提供的。 地址:http://wiki.nginx.org/RedHatNginxInitScript 注意:如果是自定义安装的nginx,修改根据实际情况修改安装路和配置文件。
修改完成后保存脚本文件,wq 保存并退出 第三步:设置nginx文件的权限 # chmod a+x /etc/init.d/nginx 解释:a+x==>all user can execute 所有用户可执行)的意思 第四步:管理脚本 到这里,我们就可以使用nginx脚本对服务进行管理了 # /etc/init.d/nginx start 启动服务 # /etc/init.d/nginx stop 停止服务 2 使用chkconfig管理上面的方法完成了用脚本管理nginx服务的功能,但是还是不太方便,比如要设置nginx开机启动等。 这个时候我们可以使用chkconfig来进行管理。 第一步:将nginx服务加入chkconfig管理列表 # chkconfig --add /etc/init.d/nginx 第二步:使用service管理服务 # service nginx start 启动服务 # service nginx stop 停止服务 第三步:设置终端模式开机启动 # chkconfig nginx on 17 设置nginx开机自启动(centos7.4)第一步:进入到/lib/systemd/system/目录 [root@iz2z init.d]# cd /lib/systemd/system/ 第二步:创建nginx.service文件,并编辑 # vim nginx.service 内如如下:
[Unit]:服务的说明 保存退出。 第三步:加入开机自启动 # systemctl enable nginx 如果不想开机自启动了,可以使用下面的命令取消开机自启动 # systemctl disable nginx 第四步:服务的启动/停止/刷新配置文件/查看状态
一个常见的错误Warning: nginx.service changed on disk. Run 'systemctl daemon-reload' to reload units.直接按照提示执行命令systemctl daemon-reload 即可。 # systemctl daemon-reload 18 重启系统,再次启动nginx报错1 故障现场之前在虚拟机centos6.5上面设置自启动之后,重新启动系统可以正常启动,也不会出错。 centos6.5的自启动设置见16部分知识点。 但是在centos7.4(阿里云上面),参照第17部分配置好了自启动。重启系统发现nginx并没有自启动 使用命名systemctl status nginx查看了一下状态,内容如下: 然后我直接进入/usr/local/nginx/sbin目录下面,执行./nginx,出现了下面的错误提示: 从这两个提示信息,可以大概看出告诉我们的就是找不到/var/run/nginx/目录下面的nginx.pid文件。 2 故障解决第一步:进入 cd /usr/local/nginx/conf/ 目录,编辑配置文件nginx.conf ; 在配置文件中找到:#pid logs/nginx.pid; 将其修改为:去掉注释,修改成自己的路径 修改完成保存退出 第二步:创建目录/var/run/nginx/ # mkdir /var/run/nginx -p 第三步:启动nginx服务 # /usr/local/nginx/sbin/nginx 可以查看一下是否成功启动了 3 故障重现[emerg] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)处理 测试发现,只要执行reboot命令重启,var/run/nginx,nginx这个文件夹都会被删除, 搞得每一次都要去建立nginx这个文件夹,简直麻烦到了极点,实在受不了。下面 继续来解决这个问题。 第一步:进入 cd /usr/local/nginx/conf/ 目录,编辑配置文件nginx.conf ; 第二步:在/usr/local/nginx目录下建立logs文件夹 # mkdir /usr/local/nginx/logs 第三步:把/var/run/nginx/目录下的nginx.pid这个文件拷贝到第二步创建的logs文件夹里面。 # cp nginx.pid /usr/local/nginx/logs/ 第四步:把logs这个文件夹在conf下也拷贝一份 # cp -r logs conf 第五步:修改权限/usr/local/nginx/logs/目录下面的nginx.pid文件的权限。 [root@iz2logs]# chmod 755 nginx.pid 第六步:重启reboot # reboot 第六步:启动nginx # /usr/local/nginx/sbin/nginx 这次是终于成功解决了,一边安装一边解决问题,到这里nginx总是算是可以自启动了,并且也不会重启后找不到nginx.pid文件。真的太不容易了。 解决的原理:就是让它去另外一个地方找nginx.pid文件, 因为/var/run/nginx/nginx.pid这个文件总是重启就删除了。 简单解决方案上面的过程有点繁琐了,实际可以直接按照下面的这个简单方法解决 修改nginx.conf文件如下: 在/usr/local/nginx/目录下创建一个logs目录。 然后启动就可以了,并且重启也不会被删除。 这样下面的日志文件的配置也可以简化为去掉# error_log logs/error.log info; 前面的“#”就可以了 error_log logs/error.log info; 19 配置日志文件的位置第一步:进入 cd /usr/local/nginx/conf/ 目录,编辑配置文件nginx.conf ; 第二步:保证肯定有这个路径,可以直接创建一下这个配置的目录 # mkdir -p /var/log/nginx/ 第三步:刷新配置文件 # /usr/local/nginx/sbin/nginx -s reload |