nginx 集群系列

来源:互联网 发布:7.62口径秃鹰数据 编辑:程序博客网 时间:2024/06/14 01:11

本文描述了一个代理服务器的基本配置。您将学习如何通过请求NGINX代理服务器在不同的协议,修改客户端发送到代理服务器的请求头,并配置缓冲的反应来自代理服务器。

介绍

代理通常用于将负载分布在几个服务器,无缝显示内容从不同的网站,或通过请求处理在协议除了HTTP应用程序服务器。

将请求传递给一个代理服务器

NGINX代理一个请求时,它将请求发送给指定的代理服务器,获取响应,并将其发送回客户机。可以请求代理到HTTP服务器(另一个NGINX服务器或其他服务器)或非HTTP服务器(可以运行一个应用程序开发与一个特定的框架,如PHP、Python)使用指定的协议。支持的协议包括FastCGI,uwsgi,SCGI,memcached.

将请求传递给一个HTTP代理服务器 proxy_pass指令中指定 location。例如:

location /some/path/ {    proxy_pass http://www.example.com/link/;}

这个示例配置结果通过所有请求处理这个位置到代理服务器在指定的地址。这个地址可以指定域名或IP地址。地址也可能包括一个端口:

location ~ \.php {    proxy_pass http://127.0.0.1:8000;}

注意,在上面的第一个例子中,代理服务器的地址是紧随其后的是一个URI, /link/。如果指定URI地址,它取代的部分请求URI相匹配的位置参数。例如,下面的请求 /some/path/page.htmlURI将代理 http://www.example.com/link/page.html。如果没有指定的地址是一个URI,或者不可能确定要替换的URI的一部分,完整的传递请求URI(可能修改)。

将请求传递给非http代理服务器,适当的 **_pass应该使用指令:

fastcgi_pass将请求传递给FastCGI服务器uwsgi_pass将请求传递给uwsgi服务器scgi_pass将请求传递给一个SCGI服务器memcached_pass将请求传递给一个memcached服务器

注意,在这些情况下,指定地址的规则可能会有所不同。您可能还需要额外的参数传递给服务器(参见参考文档更多细节)。

proxy_pass的指令也可以指出命名组的服务器。在这种情况下,请求服务器之间的分配的根据指定的方法.

通过请求头

默认情况下,NGINX重新定义两个代理请求头字段,“主人”和“连接”,消除了头字段的值是空字符串。设置为“主人” $proxy_host变量,设置为“连接” close.

改变这些设置,以及修改其他头字段,使用 proxy_set_header指令。这个指令可以在一个指定 location或更高版本。也可以指定在一个特定的 server上下文或在 http块。例如:

location /some/path/ {    proxy_set_header Host $host;    proxy_set_header X-Real-IP $remote_addr;    proxy_pass http://localhost:8000;}

在这个配置中设置为“主机”字段美元的主机变量。

防止头字段被传递到代理服务器,将它设置为空字符串如下:

location /some/path/ {    proxy_set_header Accept-Encoding "";    proxy_pass http://localhost:8000;}

配置缓冲

默认情况下NGINX缓冲区从代理服务器响应。响应存储在内部缓冲区,而不是发送到客户端,直到整个收到响应。缓冲有助于优化性能与缓慢的客户,会浪费代理服务器时间如果NGINX的反应是通过客户端同步。然而,当缓冲NGINX允许代理服务器启用过程反应迅速,而NGINX存储响应时间为客户需要下载它们。

指令负责启用和禁用缓冲 proxy_buffering。默认设置为 on启用和缓冲。

proxy_buffers指令控制缓冲区的大小和数量分配请求。的第一部分从代理服务器响应存储在一个单独的缓冲区,设置的的大小 proxy_buffer_size指令。这部分通常包含一个相对小的响应头和可以小于缓冲区的响应。

在接下来的例子中,默认的缓冲区和缓冲区的大小增加的第一部分是小于默认的响应。

location /some/path/ {    proxy_buffers 16 4k;    proxy_buffer_size 2k;    proxy_pass http://localhost:8000;}

如果禁用缓存,响应发送到客户端同步时从代理服务器接收它。这种行为可能是可取的快速互动的客户,需要尽快开始接收响应。

禁用缓冲在一个特定的位置,放置 proxy_buffering指令的 location与 off参数,如下:

location /some/path/ {    proxy_buffering off;    proxy_pass http://localhost:8000;}

在这种情况下NGINX只使用缓冲区进行配置 proxy_buffer_size存储当前响应的一部分。

一个共同使用反向代理是提供负载平衡。学习如何提高功率、性能和关注与快速部署你的应用程序是免费的五个原因选择软件负载平衡器电子书。

选择一个即将离任的IP地址

如果你的代理服务器有多个网络接口,有时您可能需要选择一个特定的源IP地址连接到代理服务器或一个上游。这可能是有用的NGINX背后如果代理服务器配置为接受来自特定的IP网络连接或IP地址范围。

指定 proxy_bind指令和必要的网络接口的IP地址:

location /app1/ {
proxy_bind 127.0.0.1;
proxy_pass http://example.com/app1/;
}

location /app2/ {
proxy_bind 127.0.0.2;
proxy_pass http://example.com/app2/;
}
指定的IP地址也可以用一个变量。例如, $server_addr变量通过网络接口的IP地址,接受了请求:

location /app3/ {
proxy_bind $server_addr;
proxy_pass http://example.com/app3/;
}

原创粉丝点击