前言

上一篇文章我们分享了Linux的软件安装以及项目后端的部署,本篇文章将要分享的内容是,Nginx的入门安装、反向代理、负载均衡等。


一、Nginx简介

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

特点

更快:单次请求响应更快,高并发可以更快的处理响应

高拓展性:设计极具扩展性,由多个不同功能、不同层次、不同类型且耦合度极低的模块组成

高可靠性:很多高流量网站都在核心服务器上大规模使用 Nginx

低内存消耗:一般1万个非活跃的 HTTP Keep-Alive 连接在 Nginx 中仅消耗2.5MB内存

高并发:单机支持10万以上的并发连接

热部署:master 管理进程与 worker工作进程的分离设计,使得 Nginx 能够支持热部署

开源协议:使用 BSD 许可协议,免费使用,且可修改源码

二、反向代理

在介绍反向代理之前先讲一下什么是正向代理

正向代理指的是,一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端

把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理

上图:

讲完正向代理,现在该分享一下反向代理。

反向代理指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP地址。

上图:

这样我们访问百度是用www.baidu.com,而不是他的真实服务器的ip

讲了反向代理,那么为什么要用反向代理呢?

1、可以起到保护网站安全的作用,因为任何来自Internet的请求都必须先经过代理服务器。

隐藏了真实的ip地址。

2、通过缓存静态资源,加速Web请求

3、实现负载均衡

三、负载均衡

目前市面上,主流的负载均衡方案,硬件设备有F5,软件方案有四层负载均衡的LVS,七层负载均衡的Nginx、Haproxy等

本文分享的内容是使用Nginx做负载均衡。

那么什么是负载均衡呢?

负载均衡是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快。

打个比方,某电商平台淘X,在双十一期间用户访问量很大,一个服务器肯定是不够的,而且承担的压力蛮大。通过负载均衡我们将所有的请求分摊在配置好的服务器中,根据服务器的性能,我们可以通过设置权重来分配各个服务器的分摊量。这样能更好的提升客户的使用体验。

就算一个服务器崩了,还有其他服务器在使用,不会导致整个软件无法使用。

四、案例

讲完理论咱们实践一手,用Nginx搭建前端项目并且实现负载均衡。

1、安装Nginx

1.1、添加 nginx 官方提供的 yum 源

rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm

使用yum安装Nginx

 yum install nginx

1.2、启动以及设置开机启动

systemctl start nginx.service
 systemctl enable nginx.service

1.3、设置防火墙开放80端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

firewall-cmd --reload && firewall-cmd --list-port

1.4、测试是否可用

能到这个界面就是安装成功且可用了。

2、Tomcat负载均衡

这里做负载均衡需要多个服务器,我们直接复制一份解压好的,过程就不展示了

然后我们将复制的Tomcat的配置修改一下

1. HTTP端口,默认8080,改为8081
        2.远程停服务端口,默认8005,改为8006
        3.AJP端口,默认8009,改为8010

防火墙开放8081端口

firewall-cmd --zone=public --add-port=8081/tcp --permanent

firewall-cmd --reload && firewall-cmd --list-port

启动服务,测试访问

上面的步骤弄完,现在可以开始Nginx的配置了。

找到nginx.conf文件,进行配置

upstream  tomcat_list {  #服务器集群名字
    server    127.0.0.1:8080  weight=1;   #服务器1   weight是权重的意思,权重越大,分配的概率越大。
    server    127.0.0.1:8081  weight=1; #服务器2   weight是权重的意思,权重越大,分配的概率越大

在default.conf中添加

location / {
      #root   /usr/share/nginx/html;
      #proxy_pass   http://172.17.0.3:8080;
      proxy_pass   http://tomcat_list;
      index index.html index.htm;
  }

重启Nginx服务让配置生效

systemctl restart nginx

测试是否生效

最终的结果就是,Nginx访问一个网址,是由两个tomcat共同承担压力;

3、前端项目部署

我们是希望能用www.zhw.com就能访问我们的项目

我们现在试着访问www.baidu.com

可以看到访问的不是百度,而是我们的项目。

因为这是我们直接编码的服务地址,会优先执行我们本机的地址,如果本机没有,它将会执行公网的。公网就是我们日常进入的网站,而这个hosts是我们本机的。

3.1、本地测试

将前端项目打包,生成dist文件夹,点击index.html访问项目测试
npm run build

       

         3.2、C:\Windows\System32\drivers\etc\hosts中增加映射关系

3.3、default.conf配置

3.4、重启测试


总结

本文分享了Nginx的负载均衡、反向代理以及前端项目的部署,在实际项目中的应用需要靠自己完成。本次分享就到此为止,本人技术有限,如有错误还望指正,谢谢啦。

Nginx入门到搭建相关推荐

  1. Nginx入门教程-简介、安装、反向代理、负载均衡、动静分离使用实例

    场景 Nginx入门简介和反向代理.负载均衡.动静分离理解 https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102790862 Ub ...

  2. nginx 启动命令_Nginx实战001:Window中配置使用Nginx入门

    什么是Nginx Nginx是一款灵活.稳定.高效.低消耗的轻量级Web服务器,支持HTTP和反向代理及电子邮件(IMAP/POP3/SMTP)等服务.它具的高性能.高并发.低内存消耗及开源免费让深受 ...

  3. Nginx 入门指南

    Nginx 入门指南 简介: Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强.本教程根据淘宝核心系统服务器平台组的 ...

  4. NodeJS入门--环境搭建 IntelliJ IDEA

    NodeJS入门–环境搭建 IntelliJ IDEA 本人也刚开始学习NodeJS,所以以此做个笔记,欢迎大家提出意见. 1.首先 下载安装NodeJS,下载安装IntelliJ IDEA 2.接下 ...

  5. Linux之nginx入门

    nginx入门 详见可参考:https://www.cnblogs.com/tiger666/p/10239307.html?tdsourcetag=s_pctim_aiomsg 1. 常用的WEB框 ...

  6. python django mysql安装_Django+Nginx+uWSGI+Mysql搭建Python Web服务器

    原标题:Django+Nginx+uWSGI+Mysql搭建Python Web服务器 安装的时候全部选择英文,记得以前选择中文的时候安装时出了问题,服务器组件一个不选,Ubuntu安装做的很贴心,基 ...

  7. linux window nginx性能,Nginx负载均衡搭建(Window与Linux)

    windows上搭建nginx负载均衡 1.准备几台http服务器软件,这里选用一台apache一台tomcat apache(windows)下载链接:https://www.apachehaus. ...

  8. Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器

    Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...

  9. nginx搭建静态文件服务器,Nginx 静态文件服务器搭建及autoindex模块解析

    导读 文章重点讲述nginx静态服务器搭建 ngx_http_autoindex_module ngx_http_autoindex_module模块处理以斜杠字符('/')结尾的请求,并生成目录列表 ...

最新文章

  1. 六个深度学习常用损失函数总览:基本形式、原理、特点
  2. Leetcode 240.剑指 Offer 06. 从尾到头打印链表 (每日一题 20210728)
  3. Android Telephony分析(五) ---- TelephonyRegistry详解
  4. 在用visio作图形界面设计,控件对齐的工具按钮
  5. ASP.NET Core端点路由中三种让人困惑的路由函数
  6. Redis从入门到精通|干货篇
  7. [转]C#网络编程(同步传输字符串) - Part.2
  8. 蓝桥杯 ALGO-60 算法训练 矩阵乘方
  9. selenium+python3+excel测试框架
  10. Nmap简单使用教程
  11. 泰勒展开与黑塞矩阵(Hessian Matrix)
  12. 如何彻底卸载VMware
  13. 创意PS:-----程序员变身超人
  14. YOLOV5代码解析——优化器
  15. e.g., malformed request syntax, invalid request message framing, or deceptive request routing
  16. 日本亚马逊海淘经验-2015
  17. 【水滴云|热点】个人信息安全有法可依,海量数据用IPFS存储
  18. Codeup——577 | 问题 C: 等腰梯形
  19. 机构能否通过做空A50来拉下A股市场?#每天来点真金融#
  20. 堆排序及从10亿个数据中找出最小或最大的10个数

热门文章

  1. 关于ACL和NAT技术(内含PC服务器常见三种类型介绍与通配符掩码简介)
  2. 云原生成为工业互联网新引擎 共同赋能制造业转型升级
  3. 360手机助手电脑版 v2.5.0.1225 官方版
  4. 儿童摄影技巧:暗调婴儿摄影构思分…
  5. oracle数据库中unpivot函数,oracle pivot 和 unpivot 函数的使用
  6. 7-3 jmu-JavaPython-统计文字中的单词数量并按出现次数排序
  7. 【MySQL报错 HResult=0x80131904】
  8. .net Exception HResult属性值汇总
  9. 什么是单色图像、二值图像、灰度图像、伪彩色图像、真彩色图像?(214)
  10. 开源软件历史十大杰出人物--值得学习