# nginx反向代理

Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强。

服务于客户端的是正向代理,例如你需要翻墙时在浏览器配置的代理服务器;

服务于服务器端的是反向代理,主要用途是负载均衡与协调适配。

nginx

# Nginx配置实例-反向代理1

A 实现效果:打开浏览器,在浏览器地址栏输入www.123.com,跳转到Linux系统tomcat主页。

B 准备工作:

实验环境:Centos7,开放8080端口

启动tomcat,端口8080

# 防火墙开启8080端口 或关闭防火墙 
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

阿里云服务器安全组添加8080端口
1
2
3
4
5
6

C 修改本地hosts文件,sudo vim /etc/hosts,添加129.111.111.11 www.123.com,其中129.111.111.11是你服务器的ip。

注意,需要备案才能访问,但可以直接用ip进行访问

D 反向代理配置

cd /usr/local/nginx/conf
vim nginx.conf

......
server {
   listen       80;
   server_name  localhost;

   location / {
      root   html;
      # 进行请求转发的配置
      proxy_pass http://localhost:8080;
      index  index.html index.htm;
   }
  ......
}
 ......

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

E 启动NGINX,测试

nginx01

# Nginx配置实例-反向代理2

A 实现效果:

访问http://129.204.116.22:8080/aaa/直接跳转到129.204.116.22:9090

访问http://129.204.116.22:8080/bbb/ 直接跳转到129.204.116.22:9966

B 准备工作:

  • 准备两个tomcat服务器,一个9090端口,一个9966端口

  • 创建文件夹和测试页面

    • 端口为9090的Tomcat: webapps/aaa/index.html
    • 端口为9966的Tomcat: webpaas/bbb/index.html

C,具体配置

开放对外访问的端口: 8080、9090、9966

......
server {
  listen       8080;
  server_name  localhost;
  location ~ /aaa/ {
      proxy_pass http://127.0.0.1:9090;
  }
  location ~ /bbb/ {
      proxy_pass http://127.0.0.1:9966;
  }
}
......
1
2
3
4
5
6
7
8
9
10
11
12

注意:

= 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。
~ 为区分大小写匹配(可用正则表达式)
!~为区分大小写不匹配
~* 为不区分大小写匹配(可用正则表达式)
!~*为不区分大小写不匹配
^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式。
1
2
3
4
5
6

实验结果:

nginx03