反向代理是个什么东西?
外部网络用户向内部服务器发出请求,并将这些请求转发给内部网络上的服务器,然后将从内部服务器上得到的响应返回给Internet上请求连接的客户:执行反向代理服务的服务器称为反向代理服务器,反向代理服务器对外部用户表现为一个服务器。
——摘自百度百科
反向代理实例
01实例一
1.1实现效果
打开浏览器,输入地址,跳转到Linux系统tomcat主页面中
1.2准备工作
1.在Linux系统安装tomcat,使用默认端口8080https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gz* tomcat 安装文件放到Linux系统中,解压* 进入到tomcat的bin目录下 ./startup.sh 启动tomcat服务器2.对外开放访问的端口firewall-cmd --add-port=8080/tcp --permanentfirewall-cmd -reload3.通过浏览器访问 tomcat 服务器ip地址:8080
注意:
需要Java 8 以上的环境
java -version//查看是否有满足的环境具体安装可参考腾讯官方文档,https://cloud.tencent.com/document/product/436/10865JDK:https://download.oracle.com/otn/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.tar.gz?AuthParam=1588781477_202c3b780a2d68656039dc8c4070802f
1.3访问过程
1.4具体配置
若在本地虚拟机进行实验,需修改host文件,进行域名与IP对应关系配置
若使用云服务器,则需要在DNS解析器上进行相关配置
在 nginx 中进行请求转发的配置(反向代理)
cd /usr/local/nginx/confvim nginx.conf
接下来在浏览器中输入ip,即可获得由tomcat出品的精美页面
02实例二
2.1实现效果
使用 nginx 反向代理,根据访问路径跳转到不同端口的服务中
2.2准备工作
准备两个 tomcat 服务器,一个 8081 端口,一个 8082 端口
准备文件夹和测试页面
Welcome to EDU Page
8081!!!!
2.3具体配置
location指令说明
location [ = | ~ | ~* | *~ ] url{}
= 用于不含正则表达式的 url 前,要去请求字符串与 url 严格匹配
~ 用于表示 url 包含正则表达式,区分大小写
~* 用于表示 url 包含正则表达式,不区分大小写
*~ 用于不含正则表达式的 url 之前,要求 nginx 服务器找到标识 url 和 请求字符串匹配度最高度的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 url 和请求字符串做匹配
在 nginx 中进行请求转发的配置(反向代理)
先把上个实验的tomcat给停掉
ps -ef | grep tomcat
kill -9 28210
修改 tomcat 端口号
cd /usr/local/tomacat/tomcat_8081/apache-tomcat-9.0.34/confvim server.xmlcd /usr/local/tomacat/tomcat_8082/apache-tomcat-9.0.34/confvim server.xml
启动 tomcat
cd /usr/local/tomacat/tomcat_8081/apache-tomcat-9.0.34/bin./startup.shcd /usr/local/tomacat/tomcat_8082/apache-tomcat-9.0.34/bin./startup.sh
开放对外访问端口号
查看目前开放的端口
firewall-cmd --list-all
打开 8081 8082 端口
firewall-cmd --add-port=8081/tcpfirewall-cmd --add-port=8082/tcp
通过浏览器看下是否成功
是的,可以了!!!
进行核心配置
cd /usr/local/nginx/confvim nginx.conf
添加如下:
server { listen 9001; server_name 140.143.169.28; location ~ /edu/ { proxy_pass http://140.143.169.28:8081; } location ~ /ftp/ { proxy_pass http://140.143.169.28:8082; }}
重新加载 nginx
cd /usr/local/nginx/sbin./nginx -s reload