nginx架构(三)Nginx服务器的代理服务

来源:互联网 发布:道光知乎 编辑:程序博客网 时间:2024/05/22 16:02

Nginx服务器的代理服务

下面我们来认识Nginx服务器的代理服务,这个应该是在放在(二)来说的,先介绍代理服务,再说具体反向代理。

1、 什么是代理(正向代理)、方向代理、透明代理?(在另外的文章有介绍)
简单来说,正向代理就是局域网内的主机要访问互联网资源,为了保护自身安全,而使用代理服务器去访问外界资源。
而方向代理则是局域网为外界(/互联网)提供资源,让外界的其他用户局域网资源,为保护自身安全性,提供代理使外界访问代理服务器。


2、 Nginx中的代理(正向代理)
Resolver指令:用于指定DNS服务器的IP地址。
proxy_pass指令:用于设置代理服务器的协议和地址。不仅用于代理服务,更重要的是反向代理。proxy_pass URL
proxy_pass  http://110.114.26.58:7080/appserver/;


server {
resolver   8.8.8.8;
listen       80;
location / {接收到的所有请求都由location块过滤处理。
proxy_pass  http://110.114.26.58:7080/appserver/;
}
}
Nginx代理服务器不支持正向代理HTTPS站点。


3、 Nginx中的反向代理
Nginx服务器同时接收的用户连接由worker_processes 和 worker_connections 决定。


proxy_pass指令:设置被代理服务器的地址。
proxy_pass  http://110.114.26.58:7080/appserver/;
如果代理服务器是一组服务器,可以使用upstream指令
Upstream proxy_svrs{
server http://110.114.26.58:7080/appserver/;
server    http://110.114.26.59:7080/appserver/;
server    http://110.114.26.60:7080/appserver/;
}


    server {
        listen       80;
        server_name  test.apphy.com;
location / {
proxy_pass  proxy_svrs;
}
}

或:
Upstream proxy_svrs{
server 110.114.26.58:7080/appserver/;
server    110.114.26.59:7080/appserver/;
server    110.114.26.60:7080/appserver/;
}


server {
listen       80;
server_name  test.apphy.com;
location / {
proxy_pass  http://proxy_svrs;
}
}



4、在URL是否包含URI处理方式是不同的
server {
listen       80;
server_name  test.apphy.com;
location / appserver/ {
proxy_pass  http://110.114.26.58:7080;
}
}

访问http://www.test.apphy.com/server/,nginx服务器会把地址转到http://110.114.26.58:7080/server,
server {
listen       80;
server_name  test.apphy.com;
location / appserver/ {
proxy_pass  http://110.114.26.58:7080/loc/;
}
}

访问http://www.test.apphy.com/server/,nginx服务器会把地址转到http://110.114.26.58:7080/loc/


使用proxy_pass指令,如果不想改变原地址中的URI就不要在URL中配置URI。


5、简单介绍一些指令
Proxy_hide_header指令:设置nginx 服务器在发送http响应时,隐藏一些头域信息。
Proxy_pass_request_body指令:设置是否将客户端请求的请求体发送给代理服务器。
Proxy_pass_request_body on|off
Proxy_pass_request_heades指令:设置是否将客户端请求的请求头发送给代理服务器。
Proxy_pass_request_heades on|off


proxy_set_header指令:更改nginx服务器接受到的客户端请求的请求头信息,然后把新的请求头发送给被代理的服务器。
proxy_set_header Host $host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_body指令:更改nginx服务器接受到的客户端请求的请求体信息,然后把新的请求体发送给被代理的服务器。
Proxy_connect_timeout指令:配置nginx服务器与后端被代理服务器尝试建立连接的超时时间。
proxy_method指令:设置nginx服务器请求代理被服务器时使用的请求方法,POST/GET。

6、 proxy buffer 
他们的配置都是针对每一个请求起作用的,而不是全局的概念,nginx服务器不会提供一个公共的proxy buffer供代理请求使用。
proxy buffer启用后,nginx服务器会异步地将被代理服务器的响应数据传递给客户端。


Nginx服务器尽可能的从被代理服务器那里接收响应数据。放到proxy buffer中,buffer大小有proxy buffersize 和proxy_temp_path指令设置。
在接收过程中,发现buffer不够大来接收一次响应数据,nginx服务器会把部分数据临时放到磁盘的临时文件中。一次响应数据接收完成或者buffer已经满了,nginx服务器开始向客户端传输数据。
每一个proxy buffer满后,从开始向客户端传输数据到数据全部传输给客户端的整个过程中,它都是处于busy状态,期间对他的进行的操作都会失败。
当proxy buffer关闭时,nginx服务器只要接到响应数据就会同步地传递给客户端,它本省不会读取完整的响应数据。


Proxy_buffering指令:设置是否启用proxy buffer。
Proxy_buffering on|off 默认是开启的。
Proxy_buffers指令:设置接收一次被代理服务器响应数据的Proxy_buffer个数和每个buffer大小。Proxy_buffers number size;
Proxy_temp_path指令:配置磁盘上的一个文件路径,用于临时存放代理服务器的大体积响应数据。





 以上资料纯属个人学习使用,不做其他用途。

0 0