Nginx之正反向代理



个人笔记,如有描述不当,欢迎留言指出~

前言

科学上网过的小伙伴们都知道,目前这些上网工具SSSSRV2Ray等等,说白了就是通过代理让我们得以愉快地遨游在知识的海洋里。

正向代理

概念

正向代理是什么?由于某些网站访问奇慢,或者墙的问题根本无法访问时,通过给浏览器配置代理ip和端口,让代理服务器转发我们请求,而后将响应结果传回浏览器,这就是正向代理。举个通俗的栗子,就好比你自己没找到合适的房子,于是你通过房租中介来租到好房子。大致流程如下:
Alt text

nginx正向代理主要配置

服务端

在虚拟机上部署了一台nginx服务器(有独立局域网ip)

1
2
3
4
5
6
7
8
server {  
resolver 114.114.114.114 8.8.8.8; #指定DNS服务器IP地址
listen 8888; #监听端口
location / {
proxy_pass $scheme://$host$request_uri; #设定代理服务器的协议和地址
proxy_set_header Host $http_host;
}
}

然后重启nginx生效

客户端

打开Chrome浏览器->设置->高级->系统->打开代理设置,如图所示:
Alt text

其中,192.168.1.44就是你新建虚拟机的独立局域网IP。

反向代理

概念

你可以这么理解,正向代理服务器只是转发代理请求,并不提供自己的服务;而反向代理可以提供自己的服务。比如说,有个请求想要访问你公司内网服务器,而实际公司只有一个公共IP,内网IP并没有映射,所以这时候你就可以使用nginx反向代理来实现内网资源的请求。另外,如果访问量过大,还可以使用nginx来进行负载均衡。大致流程如下:
Alt text

nginx反向代理主要配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
upstream  clusterserver {  
#不设置,则默认是轮询
#least_conn; #最少连接数
#ip_hash; #每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
server 192.1.168.45:9991 weight=1; #weight值为1~10,代表权重,和访问比率成正比,用于后端服务器性能不均的情况
server 192.1.168.46:9991 weight=1;
#server 192.1.168.45:9993 weight=1 down; #手工设置该服务不可用
#server 192.1.168.45:9994 weight=1 backup; #其他主服务器都挂了,自动开启这个备用服务。
}

server {
listen 9999;
server_name xxx; #你的域名或者公共IP
location / {
root html;
index index.html index.htm;
proxy_pass http://clusterserver;
proxy_connect_timeout 1; #单位为秒 超时设置,如果超时将请求其他服务
#proxy_send_timeout 1;
#proxy_read_timeout 1;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

这样当代理服务器监听到9999端口的请求时,根据proxy_pass配置找到名为clusterserver的upstream 节点来进行负载均衡。

请博主喝咖啡