nginx搭建代理服务器与负载均衡器
一、代理服务器
服务 | 功能 | 配置语法 | 默认 | 配置位置 | 配置举例 | 结果验证 | 备注 |
代理服务 | 反向代理 | proxy_pass URL | location、if in location、limit_except这一级来配置 |
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location ~ \.php{ proxy_pass http://172.20.163.135:80; root index.html; } |
此时访问http://nginx服务器/1.php 相当于访问了http://172.20.163.135/1.php | ||
代理服务 | 正向代理 | proxy_pass http://$http_host$request_uri; $http_host代表要访问的主机名 $request_uri代表要访问的URI |
resolver 114.114.114.114; location / { proxy_pass http://$http_host$request_uri; } |
此时挂好代理就可以访问http的网页了,但是不能访问https网页 | |||
代理的扩展 | 缓冲区 | proxy_buffering on|off | proxy_buffering on | http、server、location这一级来配置 |
location / { proxy_pass http://127.0.0.1:8080; proxy_redirect default; proxy_set_header Host $http_host; ===>要访问的目的主机 proxy_set_header X-Real-IP $remote_addr; ===>客户端真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ==>如果使用代理访问的话使用此方式可获取代理链 proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffer_size 32k; proxy_buffering on; proxy_buffers 4 128k; proxy_busy_buffers_size 256k; proxy_max_temp_file_size 256k; } |
尽可能的将请求信息接收完再将数据包统一转发出去 | |
代理的扩展 | 跳转重定向 | proxy_redirect default|off proxy_redirect redirect replacement |
proxy_redirect default | http、server、location这一级来配置 | 反向代理时后端服务器发来301报文时不是把301转发给客户端,而是根据301再去访问被重定向到的地址,拿到最终数据后再返回给客户端 关闭后就直接将301报文转发给客户端 这个选项一般默认即可 |
||
代理的扩展 | 修改头信息 |
proxy_set_header field value 扩展:proxy_hide_header、proxy_set_body |
http、server、location这一级来配置 | proxy_set_header X-Real-IP $remote_addr; 访问后端server时增加X-Real-IP头部,值为$remote_addr |
在经过中间这层代理后,后端server就拿不到最初源的一些信息了(比如说真实源IP)。 为了解决这个问题可以用这个方法为数据包再加一个映射的头信息,好让后端server知道真实的源信息 |
||
代理的扩展 |
Nginx作为代理到后端server的超时 |
proxy_connect_timeout time 扩展:proxy_read_timeout、proxy_send_timeout |
proxy_connect_timeout 60s | http、server、location这一级来配置 |
TCP连接超时 扩展:TCP已经建立的基础上等待回应的时间 测试的时候没测出来有什么效果 |
二、负载均衡器
功能 | 配置语法 |
配置 位置 |
配置举例 |
结果验证 |
备注 |
负载均衡 | upstream name{ server IP|域名 端口 属性; } location / { proxy_pass http://name; } |
http这 一级来 配置 |
upstream imooc { ip_hash; server 172.20.163.135:80 weight=5; server cctv.com:80; server 172.20.163.126:80 backup; server 172.20.163.123:80 down; server 172.20.163.111:80 max_fails 5; server 172.20.163.33:80 fail_timeout 60s; server 172.20.163.42:80 max_conns 1024; } location / { proxy_pass http://imooc; } |
访问http://Nginx地址/时 流量会负载均衡到 135、123、126 这三台设备上 |
后端服务器在负载均衡调度中的状态: down:当前的server暂时不参与负载均衡 backup:预留的备份服务器(其他主机全部down掉它起来) max_fails:允许请求失败的次数(健康检查) fail_timeout:经过max_fails失败后,服务暂停的时间 max_conns:限制后端server最大的接收连接数 调度算法(默认为轮询): 轮询:按时间顺序逐一分配到不同的后端服务器 加权轮询:weight值越大,分配到的概率越高(只要后面加了weight就自动从轮询变为加权轮询) ip_hash:每个请求按访问的源IP的hash结果分配,这样可以保证一个源IP的每次访问固定的一台后端 server url_hash:按照访问的URL的hash结果来分配请求,每个URL定向到同一个后端服务器 hash关键数值:hash自定义的key |
nginx搭建代理服务器与负载均衡器的更多相关文章
- 【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器
一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...
- Nginx搭建反向代理服务器过程详解
一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...
- Nginx搭建反向代理服务器
[大型网站技术实践]初级篇:借助Nginx搭建反向代理服务器 一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受int ...
- Nginx 搭建反向代理服务器过程详解
1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet ...
- Windows下使用nginx搭建反向代理服务器
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时 ...
- 【转】Nginx搭建反向代理服务器过程详解
阅读目录 1.1 反向代理初印象 1.2 反向代理的作用 2.1 Nginx是神马? 2.2 Nginx的应用现状 2.3 Nginx的核心特点 3.1 准备一个ASP.NET网站部署到IIS服务器集 ...
- 【转载】vue-cli搭建的环境,用nginx做代理服务器,访问时显示:Invalid Host header
来源:https://blog.csdn.net/Cookysurongbin/article/details/86077241 vue-cli搭建的环境,用nginx做代理服务器,访问时显示:Inv ...
- 借助Nginx搭建反向代理服务器
一.反向代理:Web服务器的"经纪人" 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网 ...
- nginx搭建http和rtmp协议的流媒体服务器
nginx搭建http和rtmp协议的流媒体服务器 时间:2013-09-23 23:52来源:佚名 作者:本站 举报 点击:232次 实验目的:让Nginx支持flv和mp4格式文件,同时支持Rtm ...
随机推荐
- JVM-4-堆内存划分
什么是堆内存划分 Java虚拟机根据对象存活的周期不同,把堆内存划分为几块, 一般分为新生代.老年代和永久代,这就是JVM的内存分代策略.(JDK 1.8之后将最初的永久代取消了,由元空间 ...
- java8-13-默认方法 静态方法 重复注解 类型注解
java8增加默认方法 静态方法 重复注解 类型注解 1.默认方法 default修饰 为什么要有这个特性? 当修改接口时候,需要修改全部实现该接口的类.为了解决这个问题,所以引进默认方法 ...
- macOS 10.15 开启 HiDPI
普通的显示,接上 MacBook 发现原生的分辨率设置在 2K 显示器上字体很小,换成 1080P 分辨率显示效果又特别模糊.下面介绍MacBook强行开启 HiDPI. 什么是 HiDPI 它使用横 ...
- 大学ACM学习笔记
高斯消元 该来的总会来的系列 int gauss() { for(int i=1;i<=n;i++)//按照列来枚举,当前之前i-1列全消完了 { int k=i; for(int j=i+1; ...
- 配置SQL Server维护计划-定时备份
目录 创建维护计划 创建任务 配置维护计划的依赖环境 还原数据库 创建维护计划 打开SQL Server 2014 Management Studio,用SQL Server管理员账户登录. 展开Ma ...
- Codeforces Round #599 (Div. 1) B. 0-1 MST 图论
D. 0-1 MST Ujan has a lot of useless stuff in his drawers, a considerable part of which are his math ...
- Python程序中的进程操作-进程间数据共享(multiprocess.Manager)
目录 一.进程之间的数据共享 1.1 Manager模块介绍 1.2 Manager例子 一.进程之间的数据共享 展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大 ...
- 【C#】C#获取本地的内网(局域网)和外网(公网)IP地址的方法
1.获取本机的IP地址集合: /// <summary> /// 获取本机所有ip地址 /// </summary> /// <param name="netT ...
- Fragment生命周期函数调用(ViewPager切换方式)
在使用ViewPager时,Google亲爹为我们提供了多种PagerAdapter.其中,与Fragment相关的是FragmentPagerAdapter和FragmentStatePagerAd ...
- 使用 Powershell 远程连接 windows server
使用 Powershell 远程连接 windows server Intro 最近我们的开发环境增加了一个 windows 服务器,没有界面的,不能直接远程桌面连上去管理,需要使用 Powershe ...