目录:
- 正向代理与方向代理简介
- 正向代理基本操作指令
- 反向代理基本操作指令
正向代理与方向代理简介
1、正向代理:内部服务器访问外部资源。
外部资源好比外面的因特网,是一个巨大的资源库,如果不受控制的访问外部资源那肯定是及其不安全的,容易导致病毒入侵内网。
因此就需要一个挡板或过滤器来限制这种不安全的资源访问,正向代理便是如此的代理服务器。
它主要是为了增强局域网内部的网络安全性,使得外网的威胁因素影响不到内部的网络;这里的代理服务器起到了防火墙的作用,同时也可以对局域网内的访问进行必要的监控和管理,正向代理服务器不支持外部对内部网络的访问请求。

2、反向代理:外部资源访问内部服务器。
它与正向代理相反,如果我们的局域网向Internet提供资源,让internet上的其他用户可以访问我们局域网内部资源,也可以设置一个代理服务器,他提供的服务就叫做反向代理(Reverse proxy)服务。

正向代理基本操作指令
|
指令名称: |
用途: |
|
resolver |
指定DNS ip地址默认端口53 |
|
resolver_timeout |
设置解析超时时间 |
|
proxy_pass |
代理服务器的协议地址 |
1、resolver:该指令用于指定DNS服务器的IP地址。
DNS服务器的主要工作是对域名的解析工作,将域名转变为对应的ip地址。
1 server {
2 # 设置DNS服务器的IP
3 # valid:有些情况下我们的数据包在一定的时间内不能被传递到目的地,但是又不能让这个数据包无线的存在,所以我们可以设定一个时间
4 # 当数据包在这段时间内没有到达目的地就会被丢弃,然后发送者会受到一个消息,并且决定要不要重新发送该数据包
5 resolver 8.8.8.8 valid = 30s;
6
7 listen 80;
8 server_name localhost;
9 }
2、resolver_timeout指令。
该指令用于设置DNS服务器解析超时时间。
1 server {
2 resolver 8.8.8.8 valid = 30s;
3 # 设置DNS服务器的解析超时时间
4 resolver_timeout 100s;
5
6 listen 80;
7 server_name localhost;
8
9 #charset koi8-r;
10 }
3、proxy_pass指令。
该指令用于配置代理服务器的协议的地址,更用于nginx的反向代理服务。
指令:proxy_pass URL(URL指的是设置代理服务器协议和地址)。
1 server {
2 resolver 8.8.8.8 valid = 30s;
3 resolver_time 100s;
4
5 listen 80;
6 server_name localhost;
7
8 location / {
9 root html;
10 index index.html index.htm;
11 proxy_pass http://$http_host$request_uri;
12 }
13 }
其中代理服务器协议设置为Http,$http_host和$request两个变量是Nginx支持的动态获取主机和uri的变量。
反向代理基本操作指令
1、proxy_pass:设置被代理服务器的地址。
1 upstream testServer {
2
3 # weight:权重
4 server ip1:8080 weight=1;
5 server ip2:8081 weight=1;
6
7 # 1-2 ip_hash; 服务器 不会太大
8 # 3-5 session复制; 配置比较麻烦一点
9 # 5以上 redis共享 直接代码层次
10 # ip_hash;
11
12 }
13
14 server {
15
16 # 监听的端口
17 listen 80;
18 server_name localhost;
19
20 #charset koi8-r;
21
22 #access_log logs/host.access.log main;
23
24 # 请求带有/server的,转到此处理
25 location /server {
26 # 设置被代理的服务器:把http://host/server的请求代理到http://testServer执行
27 # http://testServer >>> upstream testServer中的server
28 # 也就是会转到ip1:8080或ip2:8081处理
29 proxy_pass http://testServer;
30 }
31
32 }
2、proxy_hide_header:配置发送http响应隐藏的头域信息。
1 # field为需要发送的头域,该指令可以在http、server、location块中进行配置 2 proxy_hide_header field;
3、proxy_pass_header:配置头域信息。
1 # field指的是哪些文件将被发送 2 Proxy_pass_header field;
4、proxy_pass_request_body:配置是否客户端发送的请求体发送给代理服务器。
1 # 默认为on,开关可以在http块server或者location块中进行配置 2 proxy_pass_request_body on|off;
5、proxy_pass_request_headers:配置是否发送请求头给代理服务器。
# 默认为on,开关可以在http块server或者location块中进行配置 proxy_pass_request_headers on|off;
6、proxy_set_header:更改nginx服务器收到的请求头,然后将新的请求头发给代理服务器。
1 # field你要更改的信息所在的头域 2 # value更改的值,支持文本,变量或者说变量的结合 3 proxy_set_header field value; 4 5 # 默认情况下的配置 6 proxy_set_header host $proxy_host; 7 8 # 实例: 9 # 将目前host的值充填成客户端的地址值 10 proxy_set_header host $http_host; 11 # 将location块的server_name的指令充填到Host头域 12 proxy_set_header host $host;
7、proxy_set_body:更改nginx服务器的请求体。
1 # value是更改的信息,支持文本变量或者变量的组合 2 proxy_set_body value;
8、proxy_bind:强行将代理主机绑定到指定的ip地址。
1 # ip指的是主机ip(只有0.8.22nginx以上支持) 2 proxy_bind ip;
9、proxy_coonext_timeout:配置nginx服务器与被代理服务器建立进阶的超时时间。
1 # Time为超时时间默认60s 2 proxy_connect_timeout time;
10、proxy_read_timeout:nginx服务器向后端被代理服务器发出read请求后等待响应超时时间。
1 # Time为超时时间默认60s 2 proxy_read_timeout time;
11、proxy_send_timeout:示nginx服务器向后端发起write请求后等待响应的超时时间。
1 # Time为超时时间默认60s 2 proxy_send_timeout time;
12、proxy_http_version:设置http协议版本。
1 # 版本自己选择1.0或者1.1稳定一点 2 proxy_http_version 1.0|1.1;
13、proxy_method:设置nginx服务器请求被代理服务器时使用的请求方法,一般为post 或者get。
1 # 注意自己选择get还是post不要加""号 2 proxy_method post|get;
14、proxy_ignore_client_abort:设置客户端中断网络请求,nginx服务器是否中断被代理的服务器请求。
1 # 默认off,极少使用数据交互 2 proxy_ignore_client_abort off|on
15、proxy__ignore_headers:设置一些http的响应头区域 nginx服务器接收到被代理的服务器响应时不会被处理设置的头域。
1 # field 未设置的http响应头的区域,例如"x-accel-REdirect","x-Accel-Expires"等 2 proxy_ignore_headers field ...
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!