Nginx功能展示实验
Nginx功能展示实验
Nging可以作为反代服务器;也可以作为负载均衡器,并自带根据对后端服务器健康状态检测具有增删服务器的功能;也可以作为纯Web服务器,提供Web服务。
本实验将使用Nginx实现上述三种功能。
值得注意的是:Nginx的负载均衡调度功能是依赖反代功能才能实现的,所以,如果详细的描述拓扑结构的话,Nginx服务器的反代功能更靠近前端些,负载均衡调度功能肯定在反代一层的下一层。负载均衡功能不可能出现在反代的前一层。
实验中的https加密和缓存实验仅仅为了复习,与本实验的主体无密切关系。
实验说明
本次实验所用的反代服务器和Web服务器均使用Nginx程序,实验环境为CentOS7.3。
绘制实验拓扑图
graph TD
A[Client] -->|请求| B{Nginx}
B -->|响应| A
B -->|反代 & 调度| C(Web Server 1)
B -->|反代 & 调度| E(Web Server 2)
各主机节点的角色分配:
后端两台Web服务器使用Nginx提供纯Web服务。
前端一台Nginx服务器作为反向代理服务器和负载均衡器,同时具有反向代理和负载均衡调度两个功能。
IP分配:
Nginx Address :172.16.50.2(面向公网)、192.168.50.129(面向后端服务器)
Web Server 1 Address :192.168.50.128
Web Server 2 Address :192.168.50.131
节点间的关系如图所示。
实验过程
1. 先准备后端两台Web服务器
- 在webserver1上通过不同的端口部署三个虚拟主机,其中一个使用ssl方式,并提供默认访问页。配置如下:
vim /etc/nginx/conf.d/vhost.conf
server {
listen 80;
server_name 192.168.50.128;
root /web/nginx/html/vhost1;
index index.html;
}
server {
listen 8080;
server_name 192.168.50.128;
root /web/nginx/html/vhost2;
index index.html;
}
server {
listen 443 ssl;
server_name nginx.achudk.com;
root /web/nginx/ssl/vhost1;
ssl on;
ssl_certificate "/etc/pki/CA/certs/nginx.crt";
ssl_certificate_key "/etc/pki/CA/nginx.pem";
}
- 在webserver2上部署一个虚拟主机并提供默认访问页,方法同上
在实际生产环境中,两台web服务器提供的内容必须一致,本实验为了演示效果,故意将两台服务器的web页面不同,以示区别。
- 在Nginx服务器上设置sorry server 页面。
2. 部署Nginx的反代和负载均衡功能
要求:代理webserver1服务器的所有虚拟主机提供的站点
【注】
反代服务器可以设置两个网卡,外侧设置为公网,内侧设置为私网,可以代理ip为公网的或ip为私网的WebServer。
在实验过程中,可能会出现意外情况,可以试试删除反代服务器的缓存后再试试。
vim /etc/nginx/nginx.conf
# 在http{ }的上下文中添加如下内容
proxy_cache_path /var/cache/nginx/proxy_cache80 levels=1:2:1 keys_zone=proxycache80:20m max_size=1g;
upstream websrvs {
server 192.168.50.128:80 weight=1 max_fails=2 fail_timeout=3s;
server 192.168.50.131:80 weight=1;
server 127.0.0.1 backup;
# least_conn;
# hash $remote_addr;
hash $request_uri consistent;
keepalive 25;
}
vim /etc/nginx/conf.d/reverse_proxy.conf
server {
listen 80;
server_name 172.16.50.2;
location / {
proxy_pass http://websrvs;
proxy_cache proxycache80;
proxy_cache_key $request_uri;
proxy_cache_valid 200 302 301 2m;
proxy_cache_valid any 1m;
proxy_connect_timeout 70;
}
}
3. 整体试验结果验证
for ((i=1;i<=5;i++)); do curl http://172.16.50.2;done
当down掉一台web服务器时,仅有另一台提供web服务
当两台web服务器都down掉时,会显示sorry server页面。
Nginx功能展示实验的更多相关文章
- Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)
Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...
- nginx location展示及文件共享
nginx 目录展示及文件访问 效果: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d5G9wfKK-1570116907804)(E:\Users\FangJunX ...
- CUDA 11功能展示
CUDA 11功能展示 CUDA 11 Features Revealed 新的NVIDIA A100 GPU基于NVIDIA安培GPU架构,实现了加速计算的最大一代飞跃.A100 GPU具有革命性的 ...
- C#Light 再推荐,顺便介绍WP8 功能展示项目
由于在项目中验证了C#Light脚本,C#Light的健壮和稳定程度已经得到了很大的提升. 现在可以更好的把C#Light介绍给大家使用,同时也有更多的自信,告诉大家这是一个已经具有商业价值的类库. ...
- "我爱记单词"测试报告兼功能展示
"我爱记单词"测试报告兼功能展示 前言: 我们大部分的测试都是一边开发一边完成的,这里给出软件开发基本完成后在使用时的一些测试例子. 一.背景介绍 我们的数据库中一共有10个表: ...
- Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示
一直以来,都希望整合一个以客户为中心的平台,有两个方面的考虑:一是实现客户数据.客户关系.客户管理等方面的整合,以便更好利用好客户的相关资源,发挥最大的营销效益:二是整合目前我的开发框架的所有模块和技 ...
- iOS 通知的变化ios9-10,新功能展示
二.新功能展示 1 使用 /iOS通知新功能玩法 2. 全面 iOS10里的通知与推送详情 一.变化 四.Notification(通知) 自从Notification被引入之后,苹果就不断的 ...
- Web版记账本开发记录(一)代码和功能展示
一丶基本机构 数据库截图 record表 年份表 index.jsp <%@ page language="java" contentType="text/html ...
- Nginx功能介绍
Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的. 从2004年发布至今,凭借开元的力量,已经接近成熟与完善. Nginx功能丰富,可作为HTTP服务器,也可作 ...
随机推荐
- 201521123101 《Java程序设计》第13周学习总结
1. 本周学习总结 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同? 1.2 te ...
- sqlserver2012安装过程
第三次安装sqlserver2012 记录下安装过程,受益的人多多指教. 一.以我的系统64位为例,所以先准备安装包,从官网 https://www.microsoft.com/zh-CN/downl ...
- Activiti常见问题解决
1,工作流activiti eclipse 插件不自动生成png window ——> preferences——>activiti——>save——>选中create pro ...
- vue webuploader 组件开发
最近项目中需要用到百度的webuploader大文件的分片上传,对接后端的fastdfs,于是着手写了这个文件上传的小插件,步骤很简单,但是其中猜到的坑也不少,详细如下: 一.封装组件 引入百度提供的 ...
- 深度学习网络层之 Batch Normalization
Batch Normalization Ioffe 和 Szegedy 在2015年<Batch Normalization: Accelerating Deep Network Trainin ...
- Matlab入门学习(程序设计)
一.循环(for,while) for循环: for i=begin:step:end ...... end while循环: while condition ...... end 二.分枝(if,i ...
- NDK调试
第一种(控制台输出): 1.配置好环境变量,这是为了方便起见.将你sdk和ndk的根目录放到环境变量path中.配置完成之后可以来个小检测: 在命令行分别输入adb和ndk-stack后点击回车,只要 ...
- iOS根据域名获取ip地址
引入头文件 #include <netdb.h> #include <sys/socket.h> #include <arpa/inet.h> //根据域名获取ip ...
- Tomcat的四种基于HTTP协议的Connector性能比较
Tomcat从5.5版本开始,支持以下四种Connector的配置分别为: <Connector port="8081" protocol="org.apache. ...
- Eight hdu 1043 八数码问题 双搜
Eight Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...