14. Nginx 反向代理

文章目录

      • 14. 反向代理
        • 14.1 单端口反向代理
          • 14.1.1 安装 tomcat
          • 14.1.2 修改 nginx 配置文件
        • 14.2 多端口反向代理
          • 14.2.1 实现效果:
          • 14.2.2 修改 tomcat 配置文件
          • 14.2.3 拷贝一个 webapps 并修改为 webapps
          • 14.2.4 修改 nginx配置文件
          • 14.2.5 测试

14. 反向代理

14. Nginx 反向代理_第1张图片

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,
即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,
也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

14.1 单端口反向代理

实现效果:

​ 打开浏览器,在浏览器地址栏输入 demo.nginx.com(192.168.169.151) ,跳转到 912.168.169.152 的 tomcat 主页

14.1.1 安装 tomcat
  1. 将 JDK、Tomcat 安装包上传到服务器中

14. Nginx 反向代理_第2张图片

# 将一下内容添加到 /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
  1. 启动 tomcat 服务器

    # 进入 tomcat bin 目录,将所有 .sh 文件赋予执行权限
    chmod u+x ./*.sh
    
    # 启动 tomcat
    ./startup.sh
    
  2. 测试机器直接关闭防火墙

    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. Nginx 反向代理_第3张图片

  • 访问测试

浏览器访问:demo.nginx.com

14. Nginx 反向代理_第4张图片

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. Nginx 反向代理_第5张图片

14.2.3 拷贝一个 webapps 并修改为 webapps
cp webapps webapps1

14. Nginx 反向代理_第6张图片

  • 准备测试文件
# 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. Nginx 反向代理_第7张图片

14.2.5 测试

访问:demo.nginx.com/webapps

14. Nginx 反向代理_第8张图片

访问:demo.nginx.com/webapps1

14. Nginx 反向代理_第9张图片

 
 
 
 
 

你可能感兴趣的:(nginx,nginx,tomcat,nginx反向代理)