需求:
安装两个Tomcat服务,通过nginx反向代理。案例中使用两台虚拟机演示,Tomcat安装到
192.168.8.3环境中,端口为8080与9090,Nginx安装在192.168.8.4环境中。
实现步骤:
安装tomcat:
在192.168.8.3中将解压好的tomcat使用命令:
cp apache-tomcat-8.5.61 /usr/local/tomcat1 -r
cp apache-tomcat-8.5.61 /usr/local/tomcat2 -r
(tomcat安装,解压好就可以用)
配置tomcat:
修改端口,tomcat1默认8080,不用修改,修改tomcat2配置文件,进入/usr/local/tomcat2/conf,命令:vim server.xml
修改内容:<Server port="8006" shutdown="SHUTDOWN">
<Connector port="9090" protocol="HTTP/1.1"
共2处的端口。第一个默认8005改为8006,第二个默认8080改为9090。
修改tomcat首页:
进入/usr/local/tomcat2/webapps/ROOT目录,vim index.jsp
(h1标签内加一个9090作为标识)
同样的方式 修改tomcat1首页
启动tomcat1和tomcat2:
cd /usr/local/tomcat1/bin
./startup.sh 回车
(tomcat2同理)
访问tomcat: 192.168.8.3:8080 192.168.8.3:9090
修改域名映射:
进入C:/Windows/system32/drivers/etc,修改文件hosts,添加
192.168.8.4 www.tomcat1.com
192.168.8.4 www.tomcat2.com(注意:此处IP地址为nginx安装主机的IP地址,非tomcat所在主机地址。)
修改nginx配置文件:
注意,上面两个server监听端口写错了,改为80!!!
(注:upstream和server是并列关系)
遇到问题:nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
解决办法:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
访问:浏览器输入www.tomcat1.com,www.tomcat2.com即可通过nginx代理访问tomcat服务器。
nginx的负载均衡:
负载均衡:工作负载分布到多个服务器来提高网站,应用,数据库或其他服务器的性能和可靠性。
nginx负载均衡策略:轮询(默认),指定权重,ip绑定ip_hash(每个请求按访问IP的hash结果分配,每个访客固定访问一个后端服务器,可以解决session的问题)。
需求:
通过www.cluster.com访问服务集群。
实现步骤:
第一步:进入C:\Windows\system32\drivers\etc\hosts
添加:192.168.8.4 www.cluster.com (ip地址为nginx所在主机)
第二步:nginx配置服务集群
upstream cluster.server{
server 192.168.8.3:8080;
server 192.168.8.3:9090;
}
server{
listen 80;
server_name www.cluster.com;
location /{proxy_pass http://cluster.server;
}error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}}
重启nginx:./nginx -s quit
./nginx 回车
第三步:访问www.cluster.com
结果第一次为8080,第二次9090,第三次9090,第四次9090,......
因为第一次一个请求,所以8080,第二次访问www.cluster.com时浏览器会多发一个请求
http://www.cluster.com/favicon.ico,而多出来的那个请求就交给了8080端口,所以第三次依然是9090,依此类推,往后一直都是9090。
第四步:在nginx.conf配置文件的server块中添加
location /favicon.ico{
}
此时favicon.ioc请求不会做任何处理。
第五步:此时访问www.cluster.com就会出现8080,9090交替处理。(默认就是轮询的策略)
负载均衡中配置权重:
upstream cluster.server{
server 192.168.8.3:8080;
server 192.168.8.3:9090 weight=2;
}
需求:
通过nginx实现http协议代理,访问指定目录中的图片。
实现步骤:
(一般情况,nginx都会装到图片服务器的主机当中)
第一步:修改hosts文件,添加
192.168.8.4 img.cluster.com
第二步:配置nginx.conf文件
user root;
server{
listen 80;
server_name img.cluster.com;
location /{root /root/temp/img/;
}error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}}
注:/root/temp/img/为图片所在目录。
第三步:浏览器访问域名www.cluster.com,返回即为图片。