配置文件

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已经实现了第二版的功能,直接使用该内置变量即可

最常用的配置

最新文章

  1. gradle学习笔记
  2. appium testcase1(Java)
  3. ViewPager设置 缓存个数、页卡间距、数据更新
  4. 函数式编程很难,这正是你要学习它的原因 | 外刊IT评论网
  5. ios 类似的效果淘宝商品详细页面
  6. [Python Study Notes]批量将wold转换为pdf
  7. SpringBoot(9) SpringBoot整合Mybaties
  8. 关于react上线系列问题及解决方案
  9. [UE4]Authority,网络控制权
  10. 如何将spring boot项目打包成war包
  11. Pycrypto与RSA密码技术笔记
  12. 06 Maven 聚合和继承
  13. 详述Java对象创建
  14. Spring MVC request flow
  15. 使用Apache FtpServer
  16. 图论——最短路径 Dijkstra算法、Floyd算法
  17. lr的脚本调试方法
  18. 记录开发Nodejs c++ addon的一些经验(一、技术栈)
  19. 稍微谈一下 javascript 开发中的 MVC 模式
  20. [水煮 ASP.NET Web API2 方法论](1-5)ASP.NET Web API Scaffolding(模板)

热门文章

  1. Python 单例模式的几种实现方式
  2. 【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入
  3. 微信小程序使用weui扩展组件踩坑
  4. php模式的设计
  5. tp5 全选,全不选 ,ajax批量删除
  6. Linux内存泄漏
  7. options has an unknown property 'modifyVars'. These properties are valid: 处理方法
  8. 七天接手react项目 系列 —— react 脚手架创建项目
  9. Kettle错误记录之couldn't open file XXX
  10. Django 之 modelForm (edit.html页面的编写)