一、正向代理与反向代理
正向代理:是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。VPN就是这样的代理,通过VPN更改自己的IP,进而可以访问Google等一些正常情况下不能访问的网站
反向代理:反向代理也是位于客户端与服务器之前,但对用户而言,真正的服务器就是代理服务器,用户通过访问代理服务器,进而访问真正的服务器,从而获得资源。
正向代理与反向代理区别:正向代理代理的是客户端,反向代理代理的是服务端。
二、Nginx配置反向代理
这里通过一个例子来演示反向代理:我们通过访问一个nginx服务器,进而访问到tomcat服务器,即通过nginx代理tomcat服务器,访问tomcat资源。此处示例均在linux上进行。
1.首先启动tomcat。
cd /usr/src/apache-tomcat-8.5.50/bin
./startup.sh
2.配置nginx
cd /usr/local/nginx/conf
vi ./nginx.conf
修改server下的配置
server {
listen 80;
server_name 127.0.0.1;
location / {
root html;
index index.html index.htm;
# 被代理服务器的地址
proxy_pass http://127.0.0.1:8080;
}
}
三、Nginx反向代理配置指令说明
3.1 listen
listen
指令用来配置要监听的端口及IP,如
listen *:8080 | *:8081 # 监听所有8080端口及8081端口
listen IP # 监听该IP的所有端口
listen port # 监听该端口的所有IP连接
listen IP:port # 监听IP地址的端口
3.2 server_name
server_name
用来指定虚拟主机的配置,通常分为两种:
1.基于名称的server_name
server_name www.xxx.com
# 可指定多个name,中间使用空格分隔,也可使用*通配符,*只能用在收尾
server_name *.xxx.com www.xxx.*
# 使用正则匹配name
server_name ~^www\.xxx\.com$;
以上匹配顺序优先级为:准确匹配
>通配符在前的server_name
>通配符在结尾的server_name
>正则表达式的server_name
2.基于IP地址的server_name
server_name 127.0.0.1
3.3 location
location
用来匹配URL
语法结构
location [ = | ~ | ~* | ^~ ] uri {
}
1、=
:用于不含正则表达式的 uri 前,要求请求字符串与uri严格匹配
2、~
:用于表示uri包含正则表达式,区分大小写
3、~*
:用于表示uri包含正则表达式,不区分大小写
4、^~
:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~
或者 ~*
标识。
3.3.1 proxy_pass
该指令用于设置被代理服务器的地址。可以是主机名称、IP地址加端口号的形式。
语法结构
proxy_pass URL;
3.3.2 index
该指令用来配置网站的默认首页。
index index.html index.jsp;