副问题[/!--empirenews.page--]
序言
Nginx的署理成果与负载平衡成果是最常被用到的,关于nginx的根基语法知识与设置已在Nginx 设置详解中有声名,这篇就开门见山,先描写一些关于署理成果的设置,再声名负载平衡具体。
Nginx 署理处事的设置声名
1、配置 404 页面导向地点
- error_page 404 https://www.runnob.com; #错误页
- proxy_intercept_errors on; #假如被署理处事器返回的状态码为400可能大于400,配置的error_page设置起浸染。默以为off。
2、假如我们的署理只应承接管get,post哀求要领的一种
- proxy_method get; #支持客户端的哀求要领。post/get;
3、配置支持的http协议版本
- proxy_http_version 1.0 ; #Nginx处事器提供署理处事的http协议版本1.0,1.1,默认配置为1.0版本
4、假如你的nginx处事器给2台web处事器做署理,负载平衡算法回收轮询,那么当你的一台呆板web措施iis封锁,也就是说web不能会见,那么nginx处事器分发哀求照旧会给这台不能会见的web处事器,假如这里的相应毗连时刻过长,就会导致客户端的页面一向在守候相应,对用户来说体验就打打折扣,这里我们怎么停止这样的环境产生呢。这里我配张图来声名下题目。
假如负载平衡中个中web2产生这样的环境,nginx起首会去web1哀求,可是nginx在设置不妥的环境下会继承分发哀求道web2,然后守候web2相应,直到我们的相应时刻超时,才会把哀求从头分发给web1,这里的相应时刻假如过长,用户守候的时刻就会越长。
下面的设置是办理方案之一。
- proxy_connect_timeout 1; #nginx处事器与被署理的处事器成立毗连的超时时刻,默认60秒
- proxy_read_timeout 1; #nginx处事器想被署理处事器组发出read哀求后,守候相应的超时刻,默以为60秒。
- proxy_send_timeout 1; #nginx处事器想被署理处事器组发出write哀求后,守候相应的超时刻,默以为60秒。
- proxy_ignore_client_abort on; #客户端断网时,nginx处事器是否终端对被署理处事器的哀求。默以为off。
5、假如行使upstream指令设置啦一组处事器作为被署理处事器,处事器中的会见算法遵循设置的负载平衡法则,同时可以行使该指令设置在产生哪些非常环境时,将哀求顺次交由下一组处事器处理赏罚。
- proxy_next_upstream timeout; #反向署理upstream中配置的处事器组,呈现妨碍时,被署理处事器返回的状态值。
状态值可所以:error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off
error:成立毗连或向被署理的处事器发送哀求或读取相应信息时处事器产生错误。
timeout:成立毗连,想被署理处事器发送哀求或读取相应信息时处事器产生超时。
invalid_header:被署理处事器返回的相应头非常。
off:无法将哀求分发给被署理的处事器。
http_400,....:被署理处事器返回的状态码为400,500,502,等。
6、假如你想通过http获取客户的真是ip而不是获取署理处事器的ip地点,那么要做如下的配置。
- proxy_set_header Host $host; #只要用户在赏识器中会见的域名绑定了 VIP VIP 下面有RS;则就用$host ;host是会见URL中的域名和端口 www.taobao.com:80
- proxy_set_header X-Real-IP $remote_addr; #把源IP 【$remote_addr,成立HTTP毗连header内里的信息】赋值给X-Real-IP;这样在代码中 $X-Real-IP来获取 源IP
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#在nginx 作为署理处事器时,配置的IP列表,会把颠末的呆板ip,署理呆板ip都记录下来,用 【,】离隔;代码顶用 echo $x-forwarded-for |awk -F, '{print $1}' 来作为源IP
关于X-Forwarded-For与X-Real-IP的一些相干文章可以查察:HTTP 哀求头中的 X-Forwarded-For 。
7、下面是我的一个关于署理设置的设置文件部门,仅供参考。
- include mime.types; #文件扩展名与文件范例映射表
- default_type application/octet-stream; #默认文件范例,默以为text/plain
- #access_log off; #打消处事日记
- log_format myFormat ' $remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自界说名目
- access_log log/access.log myFormat; #combined为日记名目标默认值
- sendfile on; #应承sendfile方法传输文件,默以为off,可以在http块,server块,location块。
- sendfile_max_chunk 100k; #每个历程每次挪用传输数目不能大于设定的值,默以为0,即不设上限。
- keepalive_timeout 65; #毗连超时时刻,默以为75s,可以在http,server,location块。
- proxy_connect_timeout 1; #nginx处事器与被署理的处事器成立毗连的超时时刻,默认60秒
- proxy_read_timeout 1; #nginx处事器想被署理处事器组发出read哀求后,守候相应的超时刻,默以为60秒。
- proxy_send_timeout 1; #nginx处事器想被署理处事器组发出write哀求后,守候相应的超时刻,默以为60秒。
- proxy_http_version 1.0 ; #Nginx处事器提供署理处事的http协议版本1.0,1.1,默认配置为1.0版本。
- #proxy_method get; #支持客户端的哀求要领。post/get;
- proxy_ignore_client_abort on; #客户端断网时,nginx处事器是否终端对被署理处事器的哀求。默以为off。
- proxy_ignore_headers "Expires" "Set-Cookie"; #Nginx处事器不处理赏罚配置的http响应投中的头域,这里空格离隔可以配置多个。
- proxy_intercept_errors on; #假如被署理处事器返回的状态码为400可能大于400,配置的error_page设置起浸染。默以为off。
- proxy_headers_hash_max_size 1024; #存放http报文头的哈希表容量上限,默以为512个字符。
- proxy_headers_hash_bucket_size 128; #nginx处事器申请存放http报文头的哈希表容量巨细。默以为64个字符。
- proxy_next_upstream timeout; #反向署理upstream中配置的处事器组,呈现妨碍时,被署理处事器返回的状态值。error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off
- #proxy_ssl_session_reuse on; 默以为on,假如我们在错误日记中发明“SSL3_GET_FINSHED:digest check failed”的环境时,可以将该指令配置为off。
Nginx 负载平衡详解
在文章Nginx 设置详解中我说啦nginx有哪些中负载平衡算法。这一结我就给怎样操纵设置的给各人做具体声名下。
(编辑:河北网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|