配置文件

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. Java高级部分概要笔记

    复习 多线程 程序.进程.线程的概念.区别 并行.并发 创建线程的四种方式:继承Thread.实现Runnable接口.实现Callable接口.线程池 线程的生命周期 线程的同步方式,三种:同步方法 ...

  2. 2020ICPC南京 M.Monster Hunter

    题目大意 一颗根为 \(1\) 的有 \((2≤≤2000)\) 个节点的树,每个节点有一个权值 \(ℎ_{} (1≤ℎ_{}≤10^9)\) ,能删除某个点的前提是其父亲节点已经被删除,并且删除一个 ...

  3. iOS桌面小插件 Widget Extension

    iOS桌面小插件 Widget Extension 这个插件时iOS14以后才出现的,基于SwiftUI 旧项目新建时可能一堆错误,其中一个时要把插件target 开发sdk版本设置为14.0以上 新 ...

  4. ROC/AUC以及相关知识点

    参考博文,特别的好!!!:https://www.jianshu.com/p/82903edb58dc AUC的计算: 法1:AUC为ROC曲线下的面积,那我们直接计算面积可得.面积为一个个小的梯形面 ...

  5. 学习java Markdown语法

    Markdown学习 标题: #+标题名字+回车 二级标题 ##+标题名字+回车 三级四级一次类推,最多六级 字体 HELLO,World ! HELLO,World ! HELLO,World ! ...

  6. 含变量的字符串拼接(string.Format()或$"")

    含变量的字符串拼接,一般不要用 + 来连接字符串,可用以下两种方式: 一.string.Format() 二.$""  (在C#6以上的版本中可用,推荐这种写法) 1 public ...

  7. Python中的super().__init__()

    Python里的super().init()有什么用? 简单的说super().__init__(),就是继承父类的init方法,同样可以使用super()去继承其他方法. 下面是三种不同的继承.调用 ...

  8. laravel 返回统一的json数据

    laravel 在Api接口开发中,可以使用 response()->json(["code"=>200,"msg"=>"ok&qu ...

  9. 【数据库】SQL 语句大全

    数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 数据定义 CREAT ...

  10. jdk配置完成tomcat无法启动问题解决

    今天在进行struts2练习之前,准备为电脑配置tomcat容器,发现jdk的java指令可以正确运行,而tomcat启动时控制台弹出后立即消失.查资料显示jdk为正确配置,但是自己的java指令都能 ...