nginx 负载均衡详解
配置文件
upstream abc {
server 192.168.2.188:8080 weight=1 max_fails=3 fail_timeout=30;
定义集群,weight=权重轮询,max_fails=请求失败次数,fail_timeout=失败超时时间
} server {
listen 8000;
server_name web1.abc.com; location / {
proxy_read_timeout 300; #连接成功后,等候后端服务器响应时间(后端服务器处理请求的时间)
proxy_connect_timeout; #后端服务器连接的超时时间
proxy_send_timeout; #后端服务器数据回传时间,在规定时间内后端服务器必须传完所有的数据
proxy_set_header Host $host; #代理服务器发送请求头部中加入host字段信息,用于后端多个虚拟主机。
proxy_set_header X-Real-IP $remote_addr; #远端真实ip,多级代理中正向代理记录真实ip,反向代理记录连接的客户端ip
proxy_set_header X-Forwarded-For $remote_addr; #远端真实ip,多级代理会追加记录
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #在原有请求头X-Forwarded-For字段的基础上增加了连接nginx的服务器ip地址
proxy_set_header X-Forwarded-For "$http_x_forwarded_for, $remote_addr"; #相当于上面的命令
proxy_next_upstream error timeout http_404 http_502 non_idemponent(请求方法POST,LOCK,PATCH); #访问错误,允许转发到其他服务器
}
} server {
listen 8000;
server_name aaa.com
access_log logs/aaa.access.log; #访问日志
error_log logs/aaa.error.log; #错误日志 location ^~ /.well-known {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://www.weixin.com;
}
location /tomcat {
proxy_read_timeout 300;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass abc;
}
location /solr {
proxy_read_timeout 300;
proxy_pass abc
} server {
listen 8000;
server_name images.abc.com;
access_log logs/image.access.log;
error_log logs/image.error.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 150;
proxy_send_timeout 100;
proxy_read_timeout 100;
proxy_buffers 4 32k; #缓冲区的数量和大小
client_max_body_size 1m; #上传文件最大值
client_body_buffer_size 64k; #请求体缓存区大小
root /home/tom/data/images/; #图片目录
} location /images.abc.com {
rewrite '^/images.abc.com/(.*)$' http://images.abc.com/$1;
}
} server {
listen 8001;
server_name api.tt.com;
access_log logs/proxy.access.log;
error_log logs/proxy.error.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://www.tt.com;
}
} log_format mainAccess '$remote_addr - $remote_user [$time_local] $http_host $request_method "$uri" "$query_string" $status "$http_x_forwarded_for" [$request_body] [$ssl_client_s_dn]'; 日志格式
$remote_addr #客户端地址 211.28.65.253
$remote_user #客户端用户名称 --
$time_local #访问时间和时区 18/Jul/2012:17:00:01 +0800
$http_host #请求地址,即浏览器中你输入的地址(IP或域名) www.abc.com 192.168.100.100
$request_method #访问页面的请求方法 get
$uri #请求的文件和路径,不包含”?”或者”#”之类的东西
$query_string #GET请求中的参数 foo=123&bar=blahblah;这个变量只可以被修改
$status HTTP #请求状态 200
$http_x_forwarded_for #真实IP地址
$request_body #记录POST请求
$ssl_client_s_dn #返回建立的SSL连接中客户端证书的DN主题字段
-------------------------------------------------------------------------------------------------------
$upstream_status #upstream状态 200
$body_bytes_sent #发送给客户端文件内容大小 1547
$http_referer #url跳转来源 https://www.baidu.com/
$http_user_agent #用户终端浏览器等信息
$upstream_addr #后台upstream的地址,即真正提供服务的主机地址 10.10.10.100:80
$request_time #整个请求的总时间 0.205
$upstream_response_time #请求过程中,upstream响应时间 0.002日志格式 客户端地址 客户端用户 访问时间和时区
$request #请求的URI和HTTP协议 GET /article-10000.html HTTP/1.1
$request_uri #请求的整个字符串,包含了后面请求的东西
$ssl_cipher #返回SSL连接中使用的密码字段的算法。 RC4-SHA
$ssl_client_serial #返回SSL连接中客户端证书的序列号。
$ssl_client_s_dn #返回SSL连接中客户端证书的DN主题字段。
$ssl_client_i_dn #返回SSL连接中客户端证书的DN发行者字段。
$ssl_protocol #返回SSL连接中使用的协议。 TLSv1
$ssl_session_id #需要0.8.20以上版本。
$ssl_client_verify #如果客户端证书审核通过,这个变量为“SUCCESS”。
$ssl_client_raw_cert #返回SSL连接的PEM格式客户端证书; server {
listen 9001;
server_name api.tt.com;
access_log logs/proxy.access.log mainAccess;
error_log logs/proxy.error.log;
location / {
proxy_set_header Host 'api.tt.com';
proxy_set_header X-SSL-CERT $ssl_client_raw_cert; #通过X-SSL-Cert包头向服务器提供证书信息
proxy_ssl_certificate /home/tom/data/cert/apiclient_cert.pem;
proxy_ssl_certificate_key /home/tom/data/cert/apiclient_cert.key;
proxy_pass https://123.123.123.123;
}
} server {
listen 9002;
access_log logs/proxy.access.log;
error_log logs/proxy.error.log;
location / {
resolver 8.8.8.8; #正向代理,DNS 解析 IP 地址
proxy_pass $scheme://$http_host$request_uri;
#$scheme: 所用的协议,http或https
#$http_host: 始终等于HTTP_HOST请求标题
#$host :等于$http_host,小写且无端口号,若HTTP_HOST不存在或空值,等于server_name的值
#$request_uri: 完整url中去最前面$host的部分,如:www.qq.com/a/b?c=6,$request_uri== /a/b?c=6
proxy_buffers 256 4k; #缓冲区的数量和大小
proxy_max_temp_file_size 0k; #关闭临时文件缓冲
}
} server {
listen 9003;
server_name 192.168.2.2;
access_log logs/proxy.access.log;
error_log logs/proxy.error.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.2.100:9000;
}
} server {
listen 9004;
server_name 192.168.2.2;
access_log logs/file.access.log;
error_log logs/file.error.log;
location / {
root /home/tom/data/files;
}
} server {
listen 9000;
server_name 192.168.2.2 down.abc.com;
access_log logs/file.access.log;
error_log logs/file.error.log;
location / {
root /home/tom/data/files;
}
} server {
listen 9443;
server_name 192.168.2.2 down.abc.com;
access_log logs/file.access.log;
error_log logs/file.error.log;
location / {
root /home/tom/data/files;
}
} 第一版配置:
proxy_set_header X-Forwarded-For $remote_addr;
#如上配置只能增加负载均衡ip地址,丢失了客户端真实ip和任意中间代理ip 第二版配置
proxy_set_header X-Forwarded-For "$http_x_forwarded_for, $remote_addr";
#如上配置在原有请求头X-Forwarded-For字段的基础上增加了连接nginx的服务器ip地址 第三版配置(最为简单)
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#$proxy_add_x_forwarded_for已经实现了第二版的功能,直接使用该内置变量即可
最常用的配置
nginx 负载均衡详解的更多相关文章
- Nginx负载均衡详解
upstream mysvr { server 192.168.10.121:3333; server 192.168.10.122:3333; } server { .... location ...
- 160517、nginx负载均衡详解
1:什么是负载均衡 负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群).网络连接.CPU.磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用.最大化吞吐率. ...
- Nginx代理功能与负载均衡详解
序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Nginx代理服务的 ...
- Nginx 反向代理与负载均衡详解
序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在Nginx 配置详解中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Ngin ...
- Docker Swarm 负载均衡详解 or 模式选择
Docker Swarm 负载均衡详解 Swarm模式内置DNS组件,可以自动为集群中的每个服务分配DNS记录. Swarm manager使用内部负载均衡,根据服务的DNS名称在集群内的服务之间分发 ...
- Spring Cloud:使用Ribbon实现负载均衡详解(下)
在上一篇文章(Spring Cloud:使用Ribbon实现负载均衡详解(上))中,我对 Ribbon 做了一个介绍,Ribbon 可以实现直接通过服务名称对服务进行访问.这一篇文章我详细分析一下如何 ...
- Nginx的upstream反向代理、负载均衡详解
这篇文章的前提是已经配置好了NGINX,而且tomcat已经配置好了,而且能能够访问了. 说反向代理之前,我们先看看正向代理,正向代理也是大家最常接触的到的代理模式. 正向代理最大的特点是客户端非常明 ...
- Tomcat安装、配置、优化及负载均衡详解
一.常见JavaWeb服务器 1.WebLogic:是BEA公司的产品.WebSphereAS:是IBM公司的产品.JBossAS:红帽公司的产品,可以自行了解 2.Tomcat服 ...
- 项目详解2—LVS负载均衡详解
一.负载均衡集群介绍 1.集群 ① 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技 ...
随机推荐
- 【windows 操作系统】线程句柄HANDLE与线程ID的关系
什么是句柄 句柄是一种指向指针的指针.我们知道,所谓指针是一种内存地址.应用程序启动后,组成这个程序的各对象是住留在内存的.如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访 ...
- Ubuntu20.04 Linux初识
转至:https://www.cnblogs.com/luomit/p/13857574.html Ubuntu简述 Ubuntu是常见的三大操作系统Windows.MacOS.Linux中,linu ...
- Qt:QReadWriteLock
0.说明 QReadWriteLock类提供了读写锁. 读写锁是一种保护那些可以读写的资源的同步工具,如果有多个线程同时要进行读操作,但是有一个线程想要写入,那么所有其他线程都会等待直到这个写线程完成 ...
- Qt:QNetworkRequest
0.说明 QNetworkRequest类代表被QNetworkAccessManager发送的请求. QNetworkReuqest是网络访问API的一部分,在其内部保留了在网络上发送一个reque ...
- 携程applo配置
1.官网文档 https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C% ...
- 面向对象编程(C++篇2)——构造
目录 1. 引述 2. 详述 2.1. 数据类型初始化 2.2. 类初始化 1. 引述 在C++中,学习类的第一课往往就是构造函数.根据构造函数的定义,构造函数式是用于初始化类对象的数据成员的.无论何 ...
- LeetCode-071-简化路径
简化路径 题目描述:给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径. 在 Unix 风格的文件系统中,一个点(. ...
- WPF绘制图表-LiveCharts
LiveCharts是一款非常好用的WPF图表绘制类库,相比其他同类类库,LiveCharts的UI风格样式更加多样更加美观. 准备工作:安装以下两个类库: 1.甘特图 前台View代码 1 < ...
- 论文翻译:2020_DCCRN: Deep Complex Convolution Recurrent Network for Phase-Aware Speech Enhancement
论文地址:DCCRN:用于相位感知语音增强的深度复杂卷积循环网络 论文代码:https://paperswithcode.com/paper/dccrn-deep-complex-convolutio ...
- CoLAKE: 如何实现非结构性语言和结构性知识表征的同步训练
原创作者 | 疯狂的Max 论文CoLAKE: Contextualized Language and Knowledge Embedding 解读 01 背景与动机 随着预训练模型在NLP领域各大任 ...