反向代理实例
1.安装tomcat
下载安装包;
上传到linux;
tar -xvf解压;
firewall-cmd 开放端口;
到解压目录bin目录下执行./startup.sh运行;
2.实现思路
预期效果:在浏览其中输入www.123.com跳转到tomcat主页面;
linux对外暴露的是ngnix,不直接访问tomcat,而是需要访问ngnix,再由ngnix来转发请求;
1)对应域名和ip地址
域名和ip地址的映射关系在window目录下的host文件中配置;
如果没有配置会从dns中查找;
因为没有域名,所以修改host文件来配置映射;
host文件地址:
C:\Windows\System32\drivers\etc\hosts
加上一行
前面是linux服务器的ip地址,可以用ifconfig命令得到;
后面是自定义的域名;
3.配置nginx
vi打开配置文件:
vi /usr/local/nginx/conf/nginx.conf
找到server块,做修改:
将server_name改为linux服务器的ip地址;
在location中添加 proxy_pass http://127.0.0.1:8080,表示请求是转发到本机的8080端口;
server {
listen 80;
server_name 192.168.10.112;
location / {
root html;
proxy_pass http://127.0.0.1:8080
index index.html index.htm;
}
}
重新加载ngnix,让配置生效:
./nginx -s reload
请求成功:
如果linux对外关闭了8080端口,通过ngnix反向代理依然可以访问到tomcat首页;
4.停在tomcat进程
查看进程:
ps -ef|grep tomcat
如果有进程,可以看到用户,后面紧接进程id号;
停止进程:
kill -9 进程id
可以看到停止进程后不会再出现进程描述;
5.通过不同的地址访问不同的tomcat
预期效果:远程访问nginx时,根据不同的后缀,转发到不同的tomcat;
思路:
两个tomcat,一个用默认的端口8080,另一个用端口8081;在tomcat配置目录的server.xml中改端口号;
ps:为了防止端口被占用,总共要改3个端口号;8005->8015,8009->8019,8080->8081
在8080tomcat的webapp目录中放入一个名为dev文件夹,里面放a.html;
在8081tomcat的webapp目录中放一个名为env的文件夹,里面放a.html;
例如:
8080html内容:
<h1>8080</h1>
这样在tomcat启动时,访问8080端口的tomcat,xxx/dev/a.html时网页上可以看到8080几个字;
对另一个tomcat做同样操作, xxx/env/a.html访问时显示8081;
修改nginx.conf,在80端口的server块中,添加两个location;这两个location的路径正则不同;
重加载ngnix使修改生效;
启动两个tomcat,然后用配置路径访问查看效果;
配置文件nginx.conf:
location ~/dev/{
proxy_pass http://127.0.0.1:8080;
}
location ~/env/{
proxy_pass http://127.0.0.1:8081;
}
~表示后面是正则表达式;
~/dev/表示访问路径中包含/dev/时转发到8080的tomcat;
结果:
访问/dev/a.html时:
访问/env/a.html时:
可以看到访问路径中带有匹配的正则时,nginx会依据该正则转发到对应的tomcat;