nginx反向代理与负载均衡
时间:2022-07-22
本文章向大家介绍nginx反向代理与负载均衡,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
nginx正向与反向代理
正向代理
正向代理,就是我们常用的代理,类似于一个跳板,通俗的来说就是,我访问不了某网站,例如我想访问pornhub,但是由于一些不可描述的原因,我们是无法直接访问的,但是我们有一台服务器,这台服务器可以访问到该站,而我们恰好也能访问该服务器,所以我们就先连上这台服务器,告诉他,我想访问pornhub,然后这台服务器便去访问,最后将结果返回给我。
正向代理是位于客户端和服务端之间的一个服务器,客户端向代理服务器发送请求并指定好目标服务器,然后代理向服务端转发请求,并将返回的结果返回给客户端。
注意
客户端需要特殊配置才能使用,例如我们要指定账号密码和端口。
反向代理
反向代理,对于客户端来讲,代理服务器就像目标服务器一样,当客户端向代理服务器发起请求时,客户端会认为代理服务器就是我要请求的目标服务器,所以客户端不需要做任何设置,只需要把代理当作目标就行
使用场景
- 负载均衡
- 动静分离
- 外网发布
反向代理与负载均衡
环境准备
<span class="hljs">IP</span>
</td>
<td>
<span class="hljs">作用</span>
</td>
<td>
<span class="hljs">备注</span>
</td>
<span class="hljs">10.0.3.150</span>
</td>
<td>
<span class="hljs">代理服务器</span>
</td>
<td>
</td>
<span class="hljs">10.0.3.115</span>
</td>
<td>
<span class="hljs">真实服务器</span>
</td>
<td>
</td>
<span class="hljs">10.0.3.116</span>
</td>
<td>
<span class="hljs">真实服务器</span>
</td>
<td>
</td>
部署
三台服务器分别安装三台nginx服务器,具体步骤略
配置
首先是在后端的真实服务器上配置好站点,也就是在10.0.3.115和10.0.3.116上设置好所需的配置文件,随后在代理服务器上配置upstream,然后通过一个子配置文件来指定好即可
代理服务器配置
- 10.0.3.150上修改配置文件nginx.conf
upstream test_proxy {
server 10.0.3.115:8080 weight=1;
server 10.0.3.116:8080 weight=1;
}
- 指定子配置文件来将请求转发给upstream
server {
listen 80;
server_name 10.0.3.150;
location / {
proxy_pass http://test_proxy;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
expires -1;
}
}
目标服务器配置
- 10.0.3.116和10.0.3.115上配置一样
server {
listen 8080;
server_name 10.0.3.116;
root /data/web;
index index.html index.htm;
location / {
index index.html;
}
}
配置完成后重启nginx即可
测试
和proxy相关的一些配置
- [转载]Go JSON 技巧
- 简单易学的机器学习算法——Rosenblatt感知机的对偶解法
- Spring-拾遗
- Golang面试题
- 简单易学的机器学习算法——基于密度的聚类算法DBSCAN
- 厚土Go学习笔记 | 29. 接口
- Golang Template 简明笔记
- hotspare的copyback(r7笔记第30天)
- Spring-AOP
- DBA和开发同事的一些代沟(三)(r7笔记第29天)
- 简单易学的机器学习算法——非线性支持向量机
- 一条关于swap争用的报警邮件分析(一)(r7笔记第28天)
- Spring-IOC(2)
- Python3 pandas read_csv 读取txt文件报错:IOError: Initializing from file failed
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android编程自定义对话框(Dialog)位置及大小的方法
- android端实现验证码随机生成功能
- Android编程实现切换imageView的方法分析
- 猿实战20——商品发布之sku与笛卡尔乘积的那些事儿
- 浅谈Android单元测试的作用以及简单示例
- linux上传并配置jdk和tomcat的教程详解
- Android SQLite事务处理结合Listview列表显示功能示例
- Android开发之如何自定义数字键盘详解
- 在Android上实现HttpServer的示例代码
- Linux /etc/network/interfaces配置接口方法
- Android中Service和Activity相互通信示例代码
- Android编程实现定时发短信功能示例
- Android实现新浪微博一键分享的实例代码
- Android实现常见的验证码输入框实例代码
- Android实现加载状态视图切换效果