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. 201521123026 《Java程序设计》第4周学习总结

    1. 本章学习总结 尝试使用思维导图总结有关继承的知识点 使用常规方法总结其他上课内容 1.类的重写:在子类中重写的方法需要和父类被重写的方法具有相同的方法名.参数列表以及返回值类型.当子类重写父类的 ...

  2. 201521123049 《JAVA程序设计》 第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. ###1.类型转换(cast):是将两种不同类型的变量进行转换,但不能随意强制转换,随意强制 ...

  3. 201521123022 《Java程序设计》 第十一周学习总结

    1.本章学习总结 2.书面作业 本次PTA作业题集多线程 Q1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问 Q1.1 除了使用synchronized修饰方法实现互斥同步访问,还 ...

  4. Eclipse rap 富客户端开发总结(2):rap项目目前的进度和存在的问题

    1. Eclipse rap项目目前的进度 目前rap 的最新版本是 rap 1.5M4,最稳定版本是 rap 1.4.1,我们项目目前使用的版本是rap 1.4.1,Rap目前已经支持的部分是 sw ...

  5. Python学习笔记004_字典_集合

    >>> # 字典 用大括号表示, 它是影射类型,相当于java中的Map >>> >>> dict1 = {'李宁': '一切皆有可能', '耐克 ...

  6. Python: 列表注意细节与元组的基本用法

    列表注意细节: 1.list.clear():将列表中成员清空(与del list区别开) 2.list.copy():复制一份相同的列表(浅COPY,只复制列表第一层) 3.如果两个列表相等,如li ...

  7. 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)

    正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G  QQ 1481135711 这是我总 ...

  8. Java 中与(&)短路与(&&)以及 或(|)短路或(||)的关系

    一.逻辑运算符的使用 1)逻辑运算符的连接的是布尔表达式,要与位运算符做区分. 2)使用方法: public class Test {  public static void main(String[ ...

  9. UNREFERENCED_PARAMETER

    作用:告诉编译器,已经使用了该变量,不必检测警告! 在VC编译器下,如果您用最高级别进行编译,编译器就会很苛刻地指出您的非常细小的警告.当你生命了一个变量,而没有使用时,编译器就会报警告:" ...

  10. 一个综合实例讲解vue的基础知识点。

    本文通过一个简单的实例来讲解一下vue的基本知识点.通过这个综合实例的讲解,vue的基础知识就会掌握的差不多了. 首先看一下项目的效果: