对于平时学习,需要在同一个ip下,多个域名对应多个网站的实现。
实现目标:
通过aaa.test.com域名访问tomcat1服务器下的网站
通过bbb.test.com域名访问tomcat2服务器下的网站
注:这里展示的是在一台虚拟机中实现。
需求:
1)一台centos7虚拟机
2)nginx的安装包(nginx-1.8.0)
3)tomcat安装包(apache-tomcat-7.0.47)
实验说明:
主机名为taotao-nginx(这个名字无所谓啦)
本次实验使用的是一个nginx和两个tomcat来实现的模拟。
其中本虚拟机的IP(相当于公网IP):192.168.121.140
子IP(内网中分配给不同tomcat的IP):192.168.121.141
其中子IP开启了8080端口和8081端口,为别给了tomcat1和tomcat2服务器
(注:也可以用不同内网ip)
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
简单来说,nginx实现了,当用多个域名(指向同一个公网IP地址)访问代理服务器的时候,把请求转发给不同内网IP下的tomcat服务器(这里用的是用以内网IP的不同端口8080和8081),来实现不同网站的访问。
Nginx只做请求的转发,后台有多个tomcat服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定把请求转发给谁。
(可以看之前的文章:关于centos7绑定多个IP地址的方法)
显示:[root@taotao-nginx ~]# ip addr
(tomcat的更新,就放在下次更新吧)
我将tomcat放在了:
[root@taotao-nginx ~]# cd /usr/local/tomcats/
所有端口用的默认的
其中第一监听端口访问:8080
第二监听端口连接其他服务器:8009
[root@taotao-nginx tomcat2]# cd conf/
需要修改三处:
①第一处:把8005给成8006
说明:关闭用的
②第二处:把8080改为8081
说明:连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。
③第三处:把8009改为8010
说明:连接器监听8010端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。
1)启动tomcat2:
进入tomcat2/bin目录,执行:[root@taotao-nginx bin]# startup.sh
2)在浏览器中查看:
测试成功,这里发现在:
是-8081,这是因为我改了index.html页面(这就不展开详述了,没多大用,不改也行)
这里我用的是crt软件,连接的虚拟机,利用rz命令上传的
我解压到了 /export/servers里边(这个任意即可)
执行:
[root@taotao-nginx sbin]# ./nginx
启动
注:
这里要注意,我在重启后发现启动出错:
最后发现/var/run/下边并没有nginx文件夹,自行创建,再次启动nginx即可成功。
目标:当我们访问8080.itheima.com和访问8081.itheima.com的时候都可以访问到nginx成功页面
添加两个虚拟机和tomcatserver1和tomcatserver2。
外部通过域名访问虚拟机,nginx实现跳转,跳转到对应的tomcatserver服务器。
重新加载nginx.conf文件:
首先关闭nginx
[root@taotao-nginx sbin]# ./nginx -s stop
然后再加载
[root@taotao-nginx sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf
在网页中访问8080.itheima.com和8081.ietheima.com
这样就完成啦,成功实现在仅有一个“公网”IP(192.168.121.140)的情况下,通过不同域名访问不同的tomcat网站。
首先我们看一下,配置参数详解:
在http节点里添加:
#定义负载均衡设备的 Ip及设备状态
upstream tomcatserver {
server 192.168.121.141:9090 down;
server 192.168.121.141:8080 weight=2;
server 192.168.121.141:8081 weight=1;
server 192.168.121.141:7070 backup;
}
在需要使用负载的Server节点下添加
proxy_pass http://tomcatserver;
upstream 每个设备的状态:
属性 | 说明 |
---|---|
down | 表示单前的server暂时不参与负载 |
weight | 默认为1.weight越大,负载的权重就越大 |
max_fails | 允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误 |
fail_timeout:max_fails | 几次失败后,暂停的时间 |
backup | 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻 |
配置好后重新加载nginx.conf配置文件即可:
首先关闭nginx
[root@taotao-nginx sbin]# ./nginx -s stop
然后再加载
[root@taotao-nginx sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf
再次启动即可:
[root@taotao-nginx sbin]# ./nginx