Nginx (发音:engine x) 是一个高性能的HTTP和反向代理web服务器。它有2个常见的应用场景:

  • 反向代理Tomcat集群并实现负载均衡

  • 充当静态资源(html、js、css、图片)服务器

Nginx的安装

  1. 下载并安装nginx的yum源

    [root@localhost bin]# wget -P /tmp http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    ​
    [root@localhost bin]# cd /tmp
    [root@localhost tmp]# rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
  2. 使用yum安装nginx

    [root@localhost tmp]# yum install -y nginx
  3. 启动nginx

    [root@localhost tmp]# systemctl start nginx
    [root@localhost tmp]# systemctl status nginx
    ● nginx.service - nginx - high performance web serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)Active: active (running) since 五 2020-05-29 02:23:00 CST; 6s agoDocs: http://nginx.org/en/docs/Process: 40706 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)Main PID: 40707 (nginx)CGroup: /system.slice/nginx.service├─40707 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf└─40708 nginx: worker process
  4. 关闭防火墙和selinux

    [root@localhost tmp]# systemctl stop firewalld
    关闭防火墙开机自启动 systemctl disable firewalld
    ​
    [root@localhost tmp]# getenforce
    [root@localhost tmp]# setenforce 0
    ​
    永久关闭selinux:编辑 vi /etc/selinux/config
    SELINUX=disabled
  5. 访问

    http://ip:80

    nginx默认占用80端口

注意:如果nginx访问出错,可以查看 /var/log/nginx/error.log 文件获取错误日志

反向代理

代理其实就是一个中介,A和B本来可以直连,中间插入一个C,A借助C和B连接,C就是代理。刚开始的时候,代理多数是帮助client访问server端,也就是正向代理。后来又有了帮助server端响应client请求的反向代理。

  1. 正向代理

    正向代理用在client无法直接访问server端时。可以为client配置一个能访问server的代理,当client发送对server的请求时,实际上由代理发起对server的请求。

特点:

  • 代理的是client

  • 虽不直接建立连接,但server对client是可见的

  • client访问时,直接输入server的地址。

反向代理

反向代理常用于需要向client屏蔽server端的复杂设计时。

特点:

代理的是server端

server端对client是透明的不可见的

client访问时,输入的是代理的地址

Tomcat集群

当接收大量的请求时,单一服务器终究无法满足需要处理的负荷量。可以组建多台Tomcat服务器提供相同的服务,均衡负载分摊请求,提高系统的扩展性和高可用性。

集群可以提高应用性能,但是增加了服务端设计的复杂性,解决方案:nginx的反向代理。

Nginx反向代理Tomcat集群

  1. 克隆3台虚拟机,分别启动tomcat搭建集群

  2. 配置 /etc/nginx/conf.d/default.conf启动nginx

3.启动nginx

通过nginx可以访问到tomcat集群中的服务。

vi /etc/sysconfig/network-scripts/ifcfg-ens33

负载均衡

负载均衡(Load balancing),意思是将负载(工作任务,访问请求)进行平衡,用来在多个计算机(计算机集群)中分配负载,以达到集群系统整体的最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。

Nginx的负载均衡策略

  1. 轮询(默认)

  • 优点:实现简单

  • 缺点:不考虑每台服务器的处理能力

  • 配置示例如下:

    upstream 集群名 {
    # 需要负载的server列表
    server ip1:port;
    server ip2:port;
    server ip3:port;
    }
  1. 权重(使用较多)

  • 优点:考虑了每台服务器处理能力的不同,哪台机器性能高就给哪台机器的权重高一些

  • 配置示例如下:

    upstream 集群名 {
    # 需要负载的server列表,weight表示权重
    server ip1:port weight=1;
    server ip2:port weight=2;
    server ip3:port weight=4;
    }
  1. ip hash

  • 优点:能实现同一个用户始终访问同一个服务器

  • 缺点:根据 ip hash 不一定平均

  • 配置示例如下:

    upstream 集群名 {
    ip_hash;
    # 需要负载的server列表
    server ip1:port;
    server ip2:port;
    server ip3:port;
    }

静态资源服务器(了解)

传统的web项目,一般都将静态资源存放在web应用中,这样做很方便获取静态资源。但是当web项目很大,用户很多,静态资源也很多时,应用服务器的性能就会很低下了。这种情况下一般都会需要一个静态资源的服务器。

Nginx作为静态资源服务器的搭建过程:

  1. 在linux服务器中创建文件夹,并上传静态资源

    示例:
    mkdir -p /var/static
  2. 编辑 /etc/nginx/conf.d/default.conf

Linux基础学习六:Nginx的使用教程相关推荐

  1. 鸟哥的linux 实训教程,鸟哥的Linux基础学习实训教程

    1.理想的Linux上机实践课程 每周一次.每次三小时的学与练 本书所有例题讲解,均经过鸟哥在大专院校实施多年来的测试,对于学生的理解具有相当满意的效果. 2. 提供一致性教学环境 让学习者不再有陌生 ...

  2. Linux基础学习(十七)--- wiki,jira 搭建、公司面试常见问题

    Linux基础学习(十七) wiki,jira 搭建.公司面试常见问题 mysql中 utf8 支持中文字符 du -sh * 查看当前目录所有文件大小 wiki 企业多人协作系统–>企业级文档 ...

  3. linux基础学习——linux的文件权限和目录配置

    linux基础学习--linux的文件权限和目录配置 1.用户和用户组和其他人概念: 三个概念的前提宗旨:linux是一个多人多任务的系统环境.如果不对文件作出一个权限限制的话.任何人都能操作这份文件 ...

  4. 最全的linux基础学习视频

    最全的linux基础学习视频,千锋教育的Linux视频课程免费下载地址: http://pan.baidu.com/s/1c13ddvE,更多精彩的视频在不断的更新中,OpenStack覆盖了网络.虚 ...

  5. Linux基础学习之Day7-2-LVM管理

    Linux基础学习之从入门到精通Day7-2 LVM管理 在线扩容 online 数据迁移 online 创建LVM LVM叫逻辑卷管理 VG扩展/缩小 LV扩容 文件系统扩容 在线扩容及在生产中 3 ...

  6. 鸟哥私房菜linux基础学习笔记 1

    linux基础学习笔记 计算机:辅劣人脑的好工具 1.计算机硬件癿五大单元 输入单元:包括键盘.鼠标.卡片阅读机.手写板.触控屏幕等等一堆: 主机部分:这个就是系统单元,被主机机壳保护住了,里面有 C ...

  7. Linux基础学习之Day12-网络管理基础

    Linux基础学习之从入门到精通Day12 网络管理基础 使用NetworkManager管理网络 网络管理器(NetworkManager)是一个动态网络的控制器与配置系统,它用于当网络设备可用时保 ...

  8. Linux基础学习之Day7-6-Mount 挂载详解

    Linux基础学习之从入门到精通Day7-6 Mount 挂载详解 常用挂载选项详解 挂载设备文件.卷标.UUID ISO文件创建及挂载 挂载选项 -t 文件系统类型 -o 选项1,选项2- 示例: ...

  9. Linux绝对权限和相对权限法,Linux基础学习笔记

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 学习计划里有一些关于Linux的知识,所以今后一段时间用来学习Linux的基础知识和服务器架设知识,平时一直在用,但是一 ...

最新文章

  1. 程序员第一次相亲,因请女方吃肯德基而被怒删!
  2. 【Android开发】之编译脚本Makefile编写
  3. web myeclipse为什么连接不上css_Web技巧 (03)
  4. [软件更新]迅雷v5.9.8.1084发布
  5. 39.伪造重定向ICMP数据包
  6. 一行代码查看电脑Wifi密码
  7. 微博文摘——女人与ITIL
  8. oracle dbms_lob trim,DBMS_LOB包基础应用
  9. The power input for PSU 2 is lost
  10. html+显示平方米,平方米符号怎么打【四种方法】
  11. jQuery获取或设置元素的属性值prop/attr
  12. jQuery实现五星好评
  13. SQL server 2000 标准版、企业版、开发版、个人版各版本之间的区别
  14. 前端学习之路---CSS
  15. 一键即可实现图片翻译成中文,多国语言任意选
  16. 大数据之linux网络,主机名配置
  17. HEVC率失真优化方法
  18. 中国菜刀(chopper)官网原版下载!强烈鄙视那些发布所谓过狗菜刀的人!
  19. HDU - 2147 巴什博弈(必败点和必胜点)
  20. AWS OutPosts

热门文章

  1. 《C++语言入门经典》一第3章 重要的逻辑工具——判断与循环 3.1 条件判断...
  2. LeetCode - Maximum Subarray
  3. Linux的环境变量配置
  4. C语言开发fastcgi初探(一)
  5. 解析应用结构,优化网络效能
  6. WZ132源代码有的在运果子
  7. i红枣:在没有暴露链接地址的C#情况下
  8. 【绿色版】飞鸽传书2011绿色版
  9. 多媒体技术基础及应用
  10. 原创]Windows Gdi入门初级应用(VC SDK)