Nginx 高级配置
nginx官方网站:http://nginx.org/
1. Nginx连接后端的方式:反向代理(proxy_pass)、直连fastcgi(fastcgi_pass)
例子:
fastcgi_pass backend1;
proxy_pass http://backend2;
location块中配置此项,表示用反向代理或直连fastcgi的方式连接后端服务,其中backend1、backend2为upstream配置,其中配置下游的ip&port列表和调度参数,见下文。
注意:fastcgi_pass与proxy_pass是互斥配置,不能同时生效。
2. Nginx调度与负载均衡配置(upstream配置)
例如:
upstream bakend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
upstream bakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
server 192.168.0.15:80;
server 192.168.0.14:88;
server 192.168.0.15:80;
fair;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
3. upstream配置参数
例子:
upstream bakend{
ip_hash;
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060 max_fails=1 fail_timeout=10s;
server 127.0.0.1:7070 backup;
}
3) max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4) fail_timeout:max_fails次失败后,暂停改服务的时间,超过时间后继续向该服务发送流量,默认为10s。
5) backup:备用服务器,其它所有的非backup机器down或者忙的时候,启用backup机器。
4.容错机制
1) Nginx 默认判断失败节点状态以connect refuse和time out状态为准,不以HTTP错误状态进行判断失败,因为HTTP只要能返回状态说明该节点还可以正常连接,所以nginx判断其还是存活状态;
2) 除非添加了fastcgi_next_upstream或proxy_next_upstream指令设置对404、502、503、504、500和time out等错误进行转到备机处理;
3) 在next_upstream过程中,会对fails进行累加,如果备用机处理还是错误则直接返回错误信息(但404不进行记录到错误数,如果不配置错误状态也不对其进行错误状态记录)
综述,nginx记录错误数量timeout和connect refuse是永远被记录错误状态,而502、500、503、504只有在配置proxy_next_upstream或fastcgi_next_upstream后nginx才会记录这4种HTTP错误到fails中,当fails大于等于max_fails时,则该节点失效;
注意:
fastcgi_next_upstream与proxy_next_upstream支持的错误并不一致:
fastcgi_next_upstream:error
| timeout
| invalid_header
| http_500
| http_503
| http_403
| http_404
| off
proxy_next_upstream:error
| timeout
| invalid_header
| http_500
| http_502
| http_503
| http_504
|http_403
| http_404
| off
...
当fastcgi的服务异常时,因为fastcgi_next_upstream不支持http_502错误,无法对fastcgi异常进行判断,
所以fastcgi_pass与proxy_pass处理的规则也不相同:
|
fastcgi_pass
|
proxy_pass
|
---|---|---|
轮询 | 默认会将请求发送到下一个服务节点上 |
默认不会将请求发送到下一个服务节点上,直接拒绝请求 在proxy_next_upstream中配置http_502错误,则会将请求发送到下一个服务节点上 |
weight | 默认会将请求发送到下一个服务节点上 |
默认不会将请求发送到下一个服务节点上,直接拒绝请求 在proxy_next_upstream中配置http_502错误,则会将请求发送到下一个服务节点上 |
hash |
默认不会将请求发送到下一个服务节点上,直接拒绝请求 |
默认不会将请求发送到下一个服务节点上,直接拒绝请求 在proxy_next_upstream中配置http_502错误,则会将请求发送到下一个服务节点上 |
Nginx 高级配置的更多相关文章
- Nginx 高级配置--关于favicon.ico
Nginx 高级配置--关于favicon.ico 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.浏览器会默认帮咱们访问官网的图标 1>.浏览器访问网站"htt ...
- Nginx 高级配置-实现多域名HTTPS
Nginx 高级配置-实现多域名HTTPS 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx支持基于单个IP实现多域名的功能 Nginx支持基于单个IP实现多域名的功能 ...
- Nginx 高级配置-https 功能
Nginx 高级配置-https 功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HTTPS工作过程 1>.SSL/TLS SSL(Secure Socket Lay ...
- Nginx 高级配置-压缩功能
Nginx 高级配置-压缩功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx压缩相关参数概述 1>.gzip on | off; Nginx支持对指定类型的文 ...
- Nginx 高级配置-自定义json格式日志
Nginx 高级配置-自定义json格式日志 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在大数据运维工作中,我们经常会使用flume,filebeat相关日志收集工具取收集日志 ...
- Nginx 高级配置-变量使用
Nginx 高级配置-变量使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. nginx的变量可以在配置文件中引用,作为功能判断或者日志等场景使用,变量可以分为内置变量和自定义变 ...
- Nginx 高级配置-第三方模块编译
Nginx 高级配置-第三方模块编译 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 第三模块是对nginx 的功能扩展,第三方模块需要在编译安装Nginx 的时候使用参数--add ...
- Nginx 高级配置-状态页配置
Nginx 高级配置-状态页配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 建议将nginx的监控状态的值通过zabbix或者Open-Falcon之类的监控工具来监控状态,并 ...
- Nginx高级配置,同1台机器部署多个tomcat、配置多个域名,每个域名指向某一个tomcat下的项目,共用Nginx80端口访问;
需求说明: 只有一台服务器和一个公网IP,多个项目部署在这台机器上面,且每个项目使用一个单独的域名访问,域名访问时都通过Nginx的80端口访问.(如下图所示) 配置过程: 一.tomcat的serv ...
随机推荐
- 微信公众平台开发——helloworld
威信公众平台有两种模式:编辑模式 和 开发模式. 普通的功能可以通过编辑模式来搞定.开发模式具有更多的功能.让我们来使用开发模式开发helloword吧 步骤如下: 1.先注册一个公众号(https: ...
- IplImage转为Mat的方法
IplImage* S_change_out; Mat matimg; matimg=cvarrToMat(S_change_out);
- 初看Mybatis 源码 (一)
Mybatis 的使用,首先需要构建一个SqlSessionFactory 实例.而该实例可以通过SqlSessionFactoryBuilder来创建. String resource = &quo ...
- 使用BaiDu Java Script Web Api 在Web开发中嵌入地图使用步骤
前言 很多做企业网站的朋友,都喜欢有一个关于我们.联系我们的栏目,那么这个栏目放什么内容才能饱满那,只有放个地图才显得有点高大上. 一.产生并复制访问Api的密钥(AK) 1.首先我们需要注册一个百度 ...
- centos7 安装sqlserver驱动以及扩展
安装sqlserver驱动 sudo su curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repo ...
- Locust的官网及安装
Locust官网: https://docs.locust.io/en/latest/installation.html for Python 3: $ python3 -m pip install ...
- @Inject 注入 还是报空指针
@Inject 注入 还是报空指针 发布于 572天前 作者 子寒磊 1435 次浏览 复制 上一个帖子 下一个帖子 标签: 无 @IocBean@Service("userM ...
- LA 2965 中途相遇法
题目链接:https://vjudge.net/problem/UVALive-2965 题意: 有很多字符串(24),选出一些字符串,要求这些字符串的字母都是偶数次: 分析: 暴力2^24也很大了, ...
- c#按钮如何避免重复点击后报错
前言:感谢51·halcon的绝地武士大佬啊,虽然你不认识我,但是我从你那学到了很多知识,真的感谢您对知识的无私传播哈哈(两天一个博客有在坚持的,都是草稿,等这个实习阶段过去了再回来整理博客~) bt ...
- Ajax的学习笔记(一)
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),ajax并不是一门单独的语言,而是一种技术,是指一种创建交互式网页应用的网页开发技术. ...