# 6. Nginx 反向代理二

# 6.1 需求

使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务。nginx 监听端口为 9001:

  • 访问 http://172.16.58.200:9001/edu/ 直接跳转到 127.0.0.1:8080
  • 访问 http://172.16.58.200:9001/vod/ 直接跳转到 127.0.0.1:8081

# 6.2 准备工作

  1. 停掉之前的 tomcat

    # 查看进程号
    ps -ef | grep tomcat
    # kill
    kill -9 47780
    
  2. 准备文件夹

    mkdir tomcat8080
    mkdir tomcat8081
    
  3. 复制之前的 tomcat 压缩包

    cp apache-tomcat-9.0.50.tar.gz  ./tomcat8080
    cp apache-tomcat-9.0.50.tar.gz  ./tomcat8081
    
  4. 解压

    tar -zxvf apache-tomcat-9.0.50.tar.gz
    
  5. 添加测试文件

    # 进入 8080 的 webapps 中,创建测试文件
    cd tomcat8080/apache-tomcat-9.0.50/webapps/
    mkdir edu
    cd edu
    vim a.html
    <h1>hello here is 8080</hi>
    
    #8081 同理
    cd tomcat8081/apache-tomcat-9.0.50/webapps/
    mkdir vod
    cd vod
    vim a.html
    <h1>hello here is 8080</hi>
    
  6. 修改 tomcat8081 端口号

    #修改 tomcat 目录下的 conf 目录下的 server.xml 文件
    #修改前
    <Server port="8005" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
      <!-- Security listener. Documentation at /docs/config/listeners.html
      <Listener className="org.apache.catalina.security.SecurityListener" />
    ....
        <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    #修改后
    <Server port="8015" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
      <!-- Security listener. Documentation at /docs/config/listeners.html
      <Listener className="org.apache.catalina.security.SecurityListener" />
    ....
        <Connector port="8081" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    
  7. 启动 tomcat

    #进入每个 tomcat 的 bin 目录下
    ./startup.sh
    
  8. 开发 8081 端口

    firewall-cmd --add-port=8081/tcp --permanent
    firewall-cmd --reload
    

# 6.3 反向代理

  • 配置 nginx 配置文件:

    vim /usr/local/nginx/conf/nginx.conf
    
  • 内容如下:

    worker_processes  1;
    events {
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       80;
            server_name  172.16.58.200;  #localhost 改成 ip 地址
      
            location / {
                root   html;
                proxy_pass http://127.0.0.1:8080;  #配置转发
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
        
        # 再加一个 server
        server {
            listen       9001;
            server_name  172.16.58.200;  #localhost 改成 ip 地址
            
            # 配置反向代理规则
            location ~ /edu/ {
                proxy_pass http://127.0.0.1:8080;  #配置转发
            }
            
            location ~ /vod/ {
                proxy_pass http://127.0.0.1:8081;  #配置转发
            }
        }
    }
    
  • 重启 nginx

    cd /usr/local/nginx/sbin
    ./nginx -s reload
    
  • 开发 9001 端口

    firewall-cmd --add-port=9001/tcp --permanent
    firewall-cmd --reload
    

# 6.4 验证

  • 访问 http://172.16.58.200:9001/vod/a.html

    image-20210726111940747

  • 访问 http://172.16.58.200:9001/edu/a.html

    image-20210726111930047

上次更新: 8/22/2022, 10:48:17 PM