文章目录
14. 反向代理
14.1 单端口反向代理
14.1.1 安装 tomcat
- 将 JDK、Tomcat 安装包上传到服务器中
# 将一下内容添加到 /etc/profile 中
vim /etc/profile
#set java environment
JAVA_HOME=/root/jdk180 #java安装路径
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
# 使文件生效
source /etc/profile
-
启动 tomcat 服务器
# 进入 tomcat bin 目录,将所有 .sh 文件赋予执行权限 chmod u+x ./*.sh # 启动 tomcat ./startup.sh
-
测试机器直接关闭防火墙
systemctl stop firewalld
14.1.2 修改 nginx 配置文件
# 1.修改本机 hosts 文件
192.168.169.151 demo.nginx.com
# 2.增加一个测试文件 proxy.conf
# 因为在 nginx.conf 文件中有 include 参数,里面配置了引用文件的路径
server {
listen 80;
server_name demo.nginx.com;
location / {
root html;
index index.html index.htm;
proxy_pass http://192.168.169.152:8080;
}
}
- 访问测试
14.2 多端口反向代理
14.2.1 实现效果:
访问 http://demo.nginx.com/webapps/ 直接跳转到 192.168.169.152:8080/webapps/index.html
访问 http://demo.nginx.com/webapps1/ 直接跳转到 192.168.169.152:8081/webapps1/index.html
14.2.2 修改 tomcat 配置文件
# 修改 server.xml 文件,增加段新的 service 配置
vim server.xml
<Service name="Catalina1">
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina1" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps1"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
14.2.3 拷贝一个 webapps 并修改为 webapps
cp webapps webapps1
- 准备测试文件
# tomcat 默认访问 webapps/ROOT/*.(html | jsp)
# 或者在浏览器中访问 ROOT 目录下指定目录或者 webapps 目录下指定目录都一样,例如:192.168.169.152:8080/demo/demo.html
# 如果指定目录下是 index.(html | jsp) 则也可以默认访问,例如:192.168.169.152:8080/demo(相当于 192.168.169.152:8080/demo/index.html)
cd /root/apache-tomcat-7.0.69/webapps
mkdir webapps
echo "this is webapps" >> webapps/index.html
cd /root/apache-tomcat-7.0.69/webapps1
mkdir webapps1
echo "this is webapps1" >> webapps1/index.html
14.2.4 修改 nginx配置文件
server {
listen 80;
server_name demo.nginx.com;
location = /webapps {
proxy_pass http://192.168.169.152:8080; # 匹配后跳转实际访问地址为:http://192.168.169.152:8080/webapps/index.html
}
location = /webapps1 {
proxy_pass http://192.168.169.152:8081; # # 匹配后跳转实际访问地址为:http://192.168.169.152:8081/webapps1/index.html
}
}
# 注:如果匹配目录文件相似,则注意 location 匹配规则,如上面 server 中 webapps 和 webapps1 ,如果使用 ~* 匹配,那么 webapps1 就访问不到
# 注:如果在 location 或者 if 中有 “正则” 那么 proxy_pass 中则不能有 uri
# 例如:proxy_pass http://192.168.169.152:8081; 没问题
# proxy_pass http://192.168.169.152:8081/; 会报错
14.2.5 测试