nginx的反向代理二

Posted 健康平安的活着

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx的反向代理二相关的知识,希望对你有一定的参考价值。

一 背景描述

1.1 项目背景描述:

准备两个tomcat(8080、8081)和一个war程序。通过nginx的反向代理技术,根据不同的访问路径(使用路径判断),跳转到不同的的端口的服务当中,代理3个项目:

  1. tomcat 8080 下的项目nginx-demo  访问index.html显示内容为8080内容

http://192.168.152.131:8090/nginx-demo/index.html 

代理的是:127.0.0.1:8080

  1. Tomcat8081 下的项目nginx-demo  访问index.html显示内容为8081内容

http://192.168.152.131:8090/nginx-test/index.html

代理的是:127.0.0.1:8081

  1. Springboot 9090端口,访问index.html页面,显示9090的提示信息。

http://192.168.152.131:8090/

代理的是:127.0.0.1:9090

Niginx监听的端口为8090

1.2  在linux系统下再部署一个8081的tomcat

1.在linux系统下,再部署一个tomcat,端口号为8081,配置操作步骤见:

https://blog.csdn.net/u011066470/article/details/109200118

2.查看8081端口的tomcat,启动此tomcat

在bigdata目录下新建一个tomcat-8081目录,然后将tomcat软件包复制到此目录下,经过配置后,进行启动。

[root@www bin]# pwd

/root/bigdata/tomcat-8081/apache-tomcat-8.5.6/bin

[root@www bin]# sh startup.sh ;tail -f ../logs/catalina.out

3.在页面进行访问:http://192.168.152.131:8081/

1.3 在8081的tomcat下存放一个web项目

将8080服务器下的web项目nginx-test复制到8081的tomcat下,并修改项目中index.html的页面内容:

在页面进行访问:http://192.168.152.131:8081/nginx-test/index.html

 

1.4 启动访问一个springboot项目

注意需要先安装jdk。

#jar包上传位置

#启动jar包

Nohup  Java   -jar  nginx-portal.war &

#访问web项目:http://192.168.152.131:9090/index.html

1.5 将在8080的tomcat也启动

#在tomcat下8080端口下放置的是:nginx-demo的项目

如果tomcat的8080下没有启动,在需要先启动再访问:http://192.168.152.131:8080/nginx-demo/index.html

1.6 在nginx上配置反向代理

server {

        listen       8090;

        server_name  192.168.152.131;

 

        location ~ /nginx-demo/ {

        proxy_pass   http://127.0.0.1:8080;

            root   html;

            index  index.html index.htm;

        }

         location ~ /nginx-test/ {

        proxy_pass   http://127.0.0.1:8081;

            root   html;

            index  index.html index.htm;

        }

          location ~ / {

        proxy_pass   http://127.0.0.1:9090;

            root   html;

            index  index.html index.htm;

        }

 

    }

1.7 访问代理

#访问1

根据上一步nginx的配置可知道:http://192.168.152.131:8090/  为访问根目录,默认转发请求nginx-portal 这个spring boot项目。端口为9090。

 

其实访问的就是springboot下端口为9090的web项目

#访问2

访问地址:http://192.168.152.131:8090/nginx-demo/index.html   其实访问的就是8080端口下的web项目

 

 

#访问3

访问地址:http://192.168.152.131:8090/nginx-test/index.html 其实访问的就是8081端口下的web项目

 

总结:可是看到不同路径下,使用nginx实现了反向代理

1.8  location的正则说明

  1. = :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配 成功,就停止继续向下搜索并立即处理该请求。
  2. ~:用于表示 uri 包含正则表达式,并且区分大小写。
  3. ~*:用于表示 uri 包含正则表达式,并且不区分大小写。

4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字 符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。 注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。

以上是关于nginx的反向代理二的主要内容,如果未能解决你的问题,请参考以下文章

Nginx正向代理与反向代理

Nginx代理——正向反向代理,动静分离和负载均衡

Nginx的正向代理和反向代理

Nginx——nginx作为代理服务器(反向代理示例)

nginx的反向代理二

Linux服务:Nginx反向代理与负载均衡