浅谈Nginx的反向代理

128 阅读2分钟

正向代理与反向代理

正向代理:

  • 正向代理服务是由客户端设立的。
  • 客户端了解代理服务器和目标服务器都是谁。
  • 帮助咱们实现突破访问权限,提高访问的速度,对目标服务器隐藏客户端的ip地址。

反向代理:

  • 反向代理服务器是配置在服务端的。
  • 客户端是不知道访问的到底是哪一台服务器。
  • 达到负载均衡,并且可以隐藏服务器真正的ip地址。

基于Nginx实现反向代理

  1. 准备一个目标服务器。

  2. 启动之前的tomcat服务器。

  3. 编写nginx的配置文件,通过Nginx访问到tomcat服务器。

server{
  listen 80;
  server_name localhost;
    # 基于反向代理访问到Tomcat服务器
  location / {
    # 注意:ip是tomcat内部ip地址, 端口号也是tomcat的内部端口号
    proxy_pass http://172.17.0.2:8080/;
  }
}

Nginx的location路径映射

优先级关系如下:

  • location = /路径:优先级最高,精准匹配,一旦匹配, 不再去找其他匹配项。
  • location ^~ /路径:优先级次之,字符串匹配,一旦匹配, 不再去找其他匹配项。
  • location ~ 正则表达式:如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。
  • location ~* 正则表达式:和location ~ 正则表达式相同,不过当前方式不区分大小写。
  • location /路径:常规方式,匹配前缀,优先级最低。
# 直接匹配
location = / {
  # 精准匹配,主机名后面不能带任何的字符串
}

# 常规匹配
location /xxx {
  # 匹配所有以/xxx开头的路径
}

# 正则匹配
location ~ /xxx {
  # 匹配所有以/xxx开头的路径
}

# 匹配开头路径
location ^~ /images/ {
  # 匹配所有以/images开头的路径,匹配后,不再删选其他选项
}

# 正则匹配后缀
location ~* \.(gif|jpg|png)$ {
  # 匹配以gif或者jpg或者png为结尾的路径
}

# 全部通配
location / {
  # 匹配全部路径  
}