配置文件

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 负载均衡详解的更多相关文章

  1. Nginx负载均衡详解

     upstream mysvr {  server 192.168.10.121:3333; server 192.168.10.122:3333; } server { .... location ...

  2. 160517、nginx负载均衡详解

    1:什么是负载均衡 负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群).网络连接.CPU.磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用.最大化吞吐率. ...

  3. Nginx代理功能与负载均衡详解

    序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Nginx代理服务的 ...

  4. Nginx 反向代理与负载均衡详解

    序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在Nginx 配置详解中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Ngin ...

  5. Docker Swarm 负载均衡详解 or 模式选择

    Docker Swarm 负载均衡详解 Swarm模式内置DNS组件,可以自动为集群中的每个服务分配DNS记录. Swarm manager使用内部负载均衡,根据服务的DNS名称在集群内的服务之间分发 ...

  6. Spring Cloud:使用Ribbon实现负载均衡详解(下)

    在上一篇文章(Spring Cloud:使用Ribbon实现负载均衡详解(上))中,我对 Ribbon 做了一个介绍,Ribbon 可以实现直接通过服务名称对服务进行访问.这一篇文章我详细分析一下如何 ...

  7. Nginx的upstream反向代理、负载均衡详解

    这篇文章的前提是已经配置好了NGINX,而且tomcat已经配置好了,而且能能够访问了. 说反向代理之前,我们先看看正向代理,正向代理也是大家最常接触的到的代理模式. 正向代理最大的特点是客户端非常明 ...

  8. Tomcat安装、配置、优化及负载均衡详解

    一.常见JavaWeb服务器      1.WebLogic:是BEA公司的产品.WebSphereAS:是IBM公司的产品.JBossAS:红帽公司的产品,可以自行了解      2.Tomcat服 ...

  9. 项目详解2—LVS负载均衡详解

    一.负载均衡集群介绍 1.集群 ① 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技 ...

随机推荐

  1. 第一次接触数据库(SQLite)

    第一次接触,学了创建列表 + 行的删除 + 内容的更改 + 删除列表 第一次接触要知道一些基本知识 NULL(SQL) = Nnoe(python)  #空值 INTEGER = int  #整数 R ...

  2. 介绍两种在RHEL 和 CentOS 系统上检查或列出已安装的安全更新的方法

    在本文中,我们将向你展示如何检查已安装的安全更新.我会介绍两种方法,你可以选择最适合你的. 此外,我还添加了一个小的 shell 脚本,它为你提供已安装的安全包计数. 运行以下命令获取系统上已安装的安 ...

  3. 将Android手机无线连接到Ubuntu实现唱跳Rap

    您想要将Android设备连接到Ubuntu以传输文件.查看Android通知.以及从Ubuntu桌面发送短信 – 你会怎么做?将文件从手机传输到PC时不要打电话给自己:使用GSConnect就可以. ...

  4. 利用logrotate工具对catalina.out进行日志分割实战

    logrotate是linux自带的日志分割工具,如果没有可以用yum安装 yum -y install logrotate 要配置日志分割定时任务,需要在/etc/logrotate.d/下创建一个 ...

  5. 积分图(三) - Boxfilter 的实现过程分析

    Boxfilter 快速计算 它可以使复杂度为O(MN)的求和,求方差等运算降低到O(1)或近似于O(1)的复杂度,它的缺点是不支持多尺度. Boxfilter 的原理有点类似 Integral Im ...

  6. Vue 源码解读(11)—— render helper

    前言 上一篇文章 Vue 源码解读(10)-- 编译器 之 生成渲染函数 最后讲到组件更新时,需要先执行编译器生成的渲染函数得到组件的 vnode. 渲染函数之所以能生成 vnode 是通过其中的 _ ...

  7. Chapter05 流程控制(Process Control)

    目录 Chapter05 流程控制 5.1 顺序控制 5.2 分支控制 if-else 单分支基本语法: 双分支基础语法: 多分支基础语法 5.3 嵌套分支 5.4 switch分支结构 5.5 Fo ...

  8. LeetCode-028-实现 strStr()

    实现 strStr() 题目描述:实现 strStr() 函数. 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下 ...

  9. 国产化之银河麒麟安装.NetCore-包管理器方式

    背景 某个项目需要实现基础软件全部国产化,其中操作系统指定银河麒麟,数据库使用达梦V8,CPU平台的范围包括x64.龙芯.飞腾.鲲鹏等. 考虑到这些基础产品对.NETCore的支持,最终选择了3.1版 ...

  10. ArcMap从建库到出图

    1前言 本篇博主将介绍关于ArcMap建库.数据采集.拓扑检查.图表.制作符号等的基本操作. 2问题阐述 (1)检查现有block(线要素)图层,保证所有要素闭合,并将其转换为parcel(面要素): ...