nginx学习记录--安装和转发到tomcat

来源:互联网 发布:视频分析软件电力 编辑:程序博客网 时间:2024/06/07 06:12

有一段时间没写博客了,因为接了几个项目,并且临近期末,还要准备考试,比较忙.最近项目上线,项目主要是微信智能硬件管理,所以需要两个服务器,一个用来处理微信上传的消息,一个用来处理智能设备上传的消息,所以就搞了两个tomcat,然而微信的URL接口配置只能使用80端口,两个tomcat不能同时占用80端口,搜了下资料发现nginx可以转发到指定端口,故学习一番.

1.下载

nginx官网下载(这里使用的是windows版本)

版本:
1. Mainline version:nginx目前主力做的版本,可以理解为开发者版本
2. Stable version:顾名思义,稳定版本,建议使用
3. Legacy versions:之前的稳定版本

2.安装

直接解压到c盘
这里写图片描述

3.测试

  1. 启动,双击nginx.exe,这里要注意,nginx默认监听80端口,所以你要保证80端口没被占用才可以启动
  2. 在浏览器访问 http://localhost
  3. 看到如下显示即代表成功
    这里写图片描述

4.常用命令

  1. nginx -s stop //停止nginx
  2. nginx -s quit //退出nginx
  3. nginx -s reload //修改配置后重新加载nginx
  4. nginx -t //检查配置文件是否正确

5.配置转发到tomcat地址

配置文件在安装目录/conf/nginx.conf,进去后主要看server,每一个server相当于一个代理服务器,当然可以配置多个

server {        listen       80; #表示此server监听的端口        server_name  localhost; #表示监听到之后需要转到哪里去,这时我们直接转到本地,这时是直接到nginx文件夹内        #表示匹配的路径,这时配置了/表示所有请求都被匹配到这里        location / {            root   html; #面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件            index  index.html index.htm; #默认主页,挨个匹配,找到为止        }        #暂时先了解这么多,其他的我没粘贴进来    }

从配置文件中可以看出来,location决定着访问的链接会匹配到哪里,所以只需要修改为tomcat地址即可

location / {      proxy_pass http://localhost:8888; #转发到tomcat地址  }

使用命令 nginx -t检测配置文件是否正确,显示正确即可
这里写图片描述

6.测试

  1. 启动tomcat
  2. 启动nginx
  3. 在浏览器访问 http://localhost,显示出来是tomcat页面,则成功

7.location优先级问题

如上配置,你可以在server中配置多个location,比如:

            location / { #空匹配            proxy_pass   http://localhost:8888;            }            location =/device/device.do { #等于匹配            proxy_pass   http://localhost:8080;            }

但是这样就会有个问题,假设我请求的为http://XXXX.com/device/device.do,那么这两个location都可以匹配,具体使用哪个呢?这就涉及到优先级问题.

  1. 匹配符

    1. 等于匹配符:=
      等于匹配符就是等号,特点可以概括为两点:
      精确匹配
      不支持正则表达式
    2. 空匹配符
      空匹配符的特点是:
      匹配以指定模式开始的 URI
      不支持正则表达式
    3. 正则匹配符:~
      正则匹配符是可以使用正则表达式的匹配符。不过这里要强调的是,一般来说~是指:
      区分大小写的正则匹配
      而~*表示:
      不区分大小写的正则匹配
      但是对于一些对大小写不敏感的操作系统,这两者没有区别。另外一个就是^~,其表示以指定模式开始的正则匹配。
    4. 内部访问符:@
      一般用于错误页面等,这个暂不讨论。
  2. 优先级

    1. =
    2. 空匹配符,满足精确匹配时
    3. ^~
    4. ~或~*
    5. 空匹配符,满足以指定模式开始时的匹配时

由上可知访问http://XXXX.com/device/device.do时,应该会使用等于匹配的location.

  • 总结
    *(location =) > (location 完整路径 >) >(location ^~ 路径) >(location ~ 正则) >(location 路径)
    只要匹配到,其它的都会忽略,然后返回到改匹配。**
    具体怎么使用配置,还是遇到了再去学习使用比较好

0 0
原创粉丝点击