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服务器

  1. 在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";
}
  1. 在webserver2上部署一个虚拟主机并提供默认访问页,方法同上

在实际生产环境中,两台web服务器提供的内容必须一致,本实验为了演示效果,故意将两台服务器的web页面不同,以示区别。

  1. 在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功能展示实验的更多相关文章

  1. Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)

    Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...

  2. nginx location展示及文件共享

    nginx 目录展示及文件访问 效果: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d5G9wfKK-1570116907804)(E:\Users\FangJunX ...

  3. CUDA 11功能展示

    CUDA 11功能展示 CUDA 11 Features Revealed 新的NVIDIA A100 GPU基于NVIDIA安培GPU架构,实现了加速计算的最大一代飞跃.A100 GPU具有革命性的 ...

  4. C#Light 再推荐,顺便介绍WP8 功能展示项目

    由于在项目中验证了C#Light脚本,C#Light的健壮和稳定程度已经得到了很大的提升. 现在可以更好的把C#Light介绍给大家使用,同时也有更多的自信,告诉大家这是一个已经具有商业价值的类库. ...

  5. "我爱记单词"测试报告兼功能展示

    "我爱记单词"测试报告兼功能展示 前言: 我们大部分的测试都是一边开发一边完成的,这里给出软件开发基本完成后在使用时的一些测试例子. 一.背景介绍 我们的数据库中一共有10个表: ...

  6. Winform开发框架之客户关系管理系统(CRM)的开发总结系列1-界面功能展示

    一直以来,都希望整合一个以客户为中心的平台,有两个方面的考虑:一是实现客户数据.客户关系.客户管理等方面的整合,以便更好利用好客户的相关资源,发挥最大的营销效益:二是整合目前我的开发框架的所有模块和技 ...

  7. iOS 通知的变化ios9-10,新功能展示

    二.新功能展示 1  使用 /iOS通知新功能玩法 2.  全面   iOS10里的通知与推送详情 一.变化 四.Notification(通知) 自从Notification被引入之后,苹果就不断的 ...

  8. Web版记账本开发记录(一)代码和功能展示

    一丶基本机构 数据库截图 record表 年份表 index.jsp <%@ page language="java" contentType="text/html ...

  9. Nginx功能介绍

    Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的. 从2004年发布至今,凭借开元的力量,已经接近成熟与完善. Nginx功能丰富,可作为HTTP服务器,也可作 ...

随机推荐

  1. 201521123101 《Java程序设计》第13周学习总结

    1. 本周学习总结 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同? 1.2 te ...

  2. sqlserver2012安装过程

    第三次安装sqlserver2012 记录下安装过程,受益的人多多指教. 一.以我的系统64位为例,所以先准备安装包,从官网 https://www.microsoft.com/zh-CN/downl ...

  3. Activiti常见问题解决

    1,工作流activiti eclipse 插件不自动生成png window ——> preferences——>activiti——>save——>选中create pro ...

  4. vue webuploader 组件开发

    最近项目中需要用到百度的webuploader大文件的分片上传,对接后端的fastdfs,于是着手写了这个文件上传的小插件,步骤很简单,但是其中猜到的坑也不少,详细如下: 一.封装组件 引入百度提供的 ...

  5. 深度学习网络层之 Batch Normalization

    Batch Normalization Ioffe 和 Szegedy 在2015年<Batch Normalization: Accelerating Deep Network Trainin ...

  6. Matlab入门学习(程序设计)

    一.循环(for,while) for循环: for i=begin:step:end ...... end while循环: while condition ...... end 二.分枝(if,i ...

  7. NDK调试

    第一种(控制台输出): 1.配置好环境变量,这是为了方便起见.将你sdk和ndk的根目录放到环境变量path中.配置完成之后可以来个小检测: 在命令行分别输入adb和ndk-stack后点击回车,只要 ...

  8. iOS根据域名获取ip地址

    引入头文件 #include <netdb.h> #include <sys/socket.h> #include <arpa/inet.h> //根据域名获取ip ...

  9. Tomcat的四种基于HTTP协议的Connector性能比较

    Tomcat从5.5版本开始,支持以下四种Connector的配置分别为: <Connector port="8081" protocol="org.apache. ...

  10. Eight hdu 1043 八数码问题 双搜

    Eight Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...