前言

  同事总问我Nginx做反向代理负载均衡的问题,因此特意留下一篇扫盲贴!

直接部署服务器的风险

  假设,我开发了一个网站,然后买了一台Web服务器和一台数据库服务器,直接部署到公共网络上。如下图,网站用户通过手机、平板、台式机等终端设备,连上网络,输入 118.178.109.187 这个地址,我的系统就读取数据库,然后直接返回一个网页。

  像这种网站部署的方式在今天的网络部署上特别常见。这种部署方式虽然简单、方便,高效,但是也存在着巨大的安全隐患。为什么呢?那是因为我将所有服务器资源都直接暴露在了公共网络上。直接将服务器暴露在网上的风险特别高。据阿里统计,他们每天在全球范围内,会被黑客攻击大概16亿次。是不是很震惊?我的两台服务器在网上裸奔,没有防火墙,没有安全策略,也不知道其他黑客还掌握了哪些漏洞。因此一旦被各种黑客扫描到了,我的服务器就很容易沦为别人的肉鸡,任人宰割。

  所以啊,一旦要直接暴露在网上的服务器都应该是具有强大的安全策略来方式被攻击。比如,防火墙策略要做好,漏洞要修补好,端口不要乱开放等等。而且即便是这样,地球上也没有任何人敢保证他的服务器不被入侵。因此,不被入侵是不可能的了!那么我们应该怎么办呢?我觉得应该增加黑客入侵的门槛,以及减少入侵成功之后的收益。这样费力又不讨好的事情,我相信很多黑客是不愿意做的。

  那说了那么多,怎么操作呢?我觉得要暴露在公网上的服务器,必须都应该是不存储任何数据的服务器,即便是服务器挂了。用户虽然不能访问了,但是至少数据不会丢失。 所以常用的策略就是,重要的东西尽量放内网。

  如下图,手机、平板、台式机等终端设备通过公网访问反向代理服务器。反向代理服务器上有两张网卡,一张网卡是公共网卡,另一张网卡是局域网网卡。反向代理服务器通过将请求反向代理到192.168.1.1这台Web服务器,Web服务器连接局域网的数据库进行SQL查询操作,然后将数据返回给反向代理服务器,反向代理服务器再将数据通过公网传给终端设备。

  这种技术就相对安全一点了,因为只有反向代理服务器直接暴露在公网上了,即便是反向代理服务器被攻击了,只要局域网内的其他服务器不被攻击,也损失不了什么。

反向代理

  如何理解反向代理呢?就像刚刚那个图,反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

  我们从客户端的视野来看,实际上客户端并不知道真实的服务提供者是哪台服务器,它只知道它请求了反向代理服务器。因此反向代理这种方式又对外隐藏了真实服务器的地址,从一定程度上降低了安全隐患。

在Windows上部署nginx实现Web服务器反向代理和负载均衡

  本次主要通过一个例子来演示一下nginx。大概流程为,建立三个网站 分别是 192.168.17.69:20001 ,192.168.17.69:20002 ,192.168.17.69:20003  。我们在浏览器上输入 192.168.17.69 的时候,通过 nginx 反向代理这三个站点,并实现负载均衡。  

  那么先来介绍一下nginx吧!

  nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

  nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

  nginx 的下载地址 http://nginx.org/en/download.html ,我这边使用的是 Windows 版本  nginx-1.14.2 .,下载完之后解压到文件夹,如图:

  nginx的常规配置文件为 conf / nginx.conf

  

  我这边已经配置好了一个最基础的反向代理和负载均衡配置:

worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;
   #配置 nginx 的站点为 192.168.17.67 ,反向代理 192.168.17.69:20001 , 192.168.17.69:20002 , 192.168.17.69:20003 三个站点,并实现负载均衡server {listen       80;server_name  192.168.17.69;location / {proxy_pass   http://web;index  index.html index.htm;}}upstream web  {server 192.168.17.69:20001;server 192.168.17.69:20002;server 192.168.17.69:20003;}
}

  server 表示 nginx 服务监听 192.168.17.69 服务器的 80 端口。进行 http 协议反向代理 web ,web下面有三个站点。多个就实现负载均衡。

  配置完 nginx 之后,我们将 nginx 运行起来。使用 dos 命令:nginx.exe 或者 start nginx 都可以:

  然后我们来访问一下 192.168.17.69

  

  可以看到,我每次刷新 或者 进入 192.168.17.69 的时候,看到的页面都有些不一样。通过观察,我们可以得知,nginx 将我们的请求进行了反向代理和负责均衡。

转载于:https://www.cnblogs.com/hexu6788/p/10179339.html

使用Nginx实现服务器反向代理和负载均衡相关推荐

  1. Nginx总结(反向代理、负载均衡、动静分离)篇

    一.Nginx简介 什么是Nginx Nginx ("engine x")是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上ngimx,的并发能力确实在同 ...

  2. nginx做为反向代理实现负载均衡的例子 .

    我们介绍了nginx这个轻量级的高性能server主要可以干的两件事情: >直接作为http server(代替apache,对PHP需要FastCGI处理器支持,这个我们之后介绍): > ...

  3. Nginx教程系列一:Nginx简介(反向代理、负载均衡)

    文章目录 什么是Nginx 反向代理 负载均衡 什么是Nginx Nginx 是一个高性能的HTTP和反向代理web服务器,其特点是占用内存小,并发能力强,能经受高负载的考验,有报告表名能够支持高达5 ...

  4. Nginx正、反向代理以及负载均衡介绍

    正向代理 正向代理,"它代理的是客户端",是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始 ...

  5. 懂点 Nginx 如何实现反向代理与负载均衡,是面试加分项

    点击上方"搜云库技术团队",选择"设为星标" 回复"1024"或"面试题"获取学习资料 企业在解决高并发问题时,一般有两 ...

  6. nginx的反向代理及负载均衡

    查看内核版本号: uname  -r 查看Linux发行版本 :cat /etc/issue 或cat /etc/release 查看bash 版本 : bash  --version <?xm ...

  7. 【网络编程】多个服务器的情况:nginx实现反向代理、nginx基于反向代理实现负载均衡

    如果我们有多个服务器,比如我们只有一个域名:我们可以利用其中一台服务器,通过nginx为这一个域名实现反向代理:进一步,我们可以利用这多台服务器,为这一个域名基于nginx的反向代理实现负载均衡. 文 ...

  8. 懂点 Nginx 反向代理与负载均衡,是面试加分项没有之一

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等 ...

  9. 介绍下Nginx 反向代理与负载均衡

    Nginx的代理功能与负载均衡功能是最常被用到的,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Nginx 代理服务的配置说明 1.设置 404 页面导向地址 error_pag ...

最新文章

  1. 计算机基础-计算机硬件
  2. 4.11-固件映像包 (FIP)
  3. 单片机复位电路电容一定用电解电容_什么叫51单片机最小系统
  4. 这哥们到底是应聘的还是来收购公司的?| 今日趣图
  5. 为什么我们需要使用Pandas新字符串Dtype代替文本数据对象
  6. MIT算法导论(一)——算法分析和引论
  7. Android项目实战(十):自定义倒计时的TextView
  8. Atitit python3.0 3.3 3.5 3.6 新特性 Python2.7新特性1Python 3_x 新特性1python3.4新特性1python3.5新特性1值得关注的新特性1Pyth
  9. Palindrome Number之Java实现
  10. Linux ubuntu 串口调试工具
  11. Windows10自带的 录制音频 方法
  12. 滤波器原理及其作用计算机网络,滤波器的原理与作用
  13. Entrez Direct
  14. python代替按键精灵 游戏内失灵_按键精灵是如何做到不被程序屏蔽的?python34中如何将命令行传递给python脚 节流参数转换为unicode字符串...
  15. JVM学习~第一天~JVM简介
  16. #个人日记-《扫黑·决战》电影观后感-20210511
  17. CTF-隐写术(七)
  18. c语言typedef结构体_typedef在C中具有结构的示例
  19. 小白问哪种编程语言最好,二当家呵呵一笑,当然是......
  20. 精益数据分析阅读笔记之商业模式

热门文章

  1. 代码模拟实现十六进制转二进制
  2. JMeter重要知识点汇总
  3. Client Dimensions , offsetHeight , scrollTop 属性详解
  4. 如何在CentOS 5.x 中安装Windows Azure Linux Agent (WALA)
  5. SqlServer2000日志文件过大问题处理
  6. CentOS 6 无法上网 问题解决方案[VMware]
  7. 三十八、判断服务是否运行及定位问题
  8. linux 子系统 巡检,Linux 系统巡检
  9. calico跨主机ping不通_戳穿 Calico 的谎言
  10. python batch normalization_Batch Normalization 引出的一系列问题