1.我在B站学运维之Nginx反代服务器基础介绍与入门实践

1.我在B站学运维之Nginx反代服务器基础介绍与入门实践插图
帅哥(靓仔)、美女,点个关注后续不迷路!

本章目录

1.我在B站学运维之Nginx反代服务器基础介绍与入门实践插图1
  • 1.Ngnix介绍

  • 2.Nginx安装

    • 2.0 源码安装

    • 2.1 yum安装nginx

    • 2.2 mac安装Nginx

  • 3.Nginx管理与工作模式

  • 4.Nginx转发简单实例

1.我在B站学运维之Nginx反代服务器基础介绍与入门实践插图2

官方描述:Nginx is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server;
描述:Nginx(读音"engine x")是一个高性能的HTTP负载均衡和反向代理服务器,在2019.3.12被F5硬件负载均衡厂家以6.7亿美金收购了,主要是用于发布网站代码,提供网页信息服务的,用户通过浏览器可以实现页面的访问,也可以是一个IMAP/POP3/SMTP代理服务器;在高连接并发的情况下Nginx是Apache服务器不错的替代品,其特点是占有内存少,并发能力强(在同类型的网页服务器中表现较好),Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好很多;

主要功能:

  • 负载均衡服务器:用户每次访问都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况(nginx会给你分配服务器压力小的去访问);

  • HTTP代理服务器对外进行服务:通过第三方服务器访问内部服务器集群的内容,但是我们并不知道是哪一台服务器提供的内容;

  • 动态网页与静态网页资源相互分离以提高网站的整体性能;

Nginx特点:

  • 安装启用简单以及跨平台,配置文件非常简洁(还能够支持perl语法), 并且Bugs非常少的服务器性能优秀稳定,能够在升级情况下不间断服务

  • 提供反向代理(代理转发功能)、负载均衡、WEB服务器(处理静态文件)和支持7层负载均衡和故障隔离等功能

  • Nginx 采用C进行编写内存占有少,使用更少的资源,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名(具有高性能、轻量级、内存消耗少,强大的负载均衡能力等优势。)

  • 由于它的内存占用少(一个worker进程只占用10-12M内存),启动极快,高并发能力强(5w/s)-相当于Apache WEB整体性能的5-10倍,在互联网项目中广泛应用。

  • 总结一句:IO多路复用(多线程), 轻量级 , 功能模块少,代码模块化,并发处理能力强

什么是IO多路复用(多线程)?

1.我在B站学运维之Nginx反代服务器基础介绍与入门实践插图3
IO多路复用

架构体系:
动静分离是每个网站发展到一定规模之后必然的结果。

  • 静态网页一般是跟后端数据库不发生交互的网页,其网页内容很少更新或者几乎不更新,网页文件后缀命名通常是以.htm、.html、.xml结尾的。

  • 动态网页一般是跟后端数据库发生交互的网页,其网页内容经常更新或者随着后端数据库内容变化而更新,网页文件后缀命名通常是以.asp、.jsp、.php结尾的。

静态请求则应当最好将其拆分并启用独立的域名,既便于管理的需要也便于今后能够快速支持CDN。
如果一台Nginx性能无法满足,则可以考虑在Nginx前端添加LVS负载均衡,由多台Nginx共同分担网站请求。

新版Nginx目前已经支持直接读写Memcache,可以编译安装时候选择添加此类模块,从而节省了转交给PHP或者JPS等动态程序服务器处理时间,提高效率的同时,减小了动态服务器的负载。

使用场景:(Nginx有点入口网关的味道)

1.我在B站学运维之Nginx反代服务器基础介绍与入门实践插图4

补充:
目前 Nginx 的主力竞争对手莫过于 Apache ,性能优秀稳定、配置简单以及跨平台,下面做了一个简单的对比帮助大家更好的理解 Nginx 的优势。

  • 常见的中间件服务:httpd-apache基金会的产品,IIS-微软的产品,gws-google的产品;

  • Nginx 配置简洁, Apache 配置复杂

  • Nginx 静态处理性能比 Apache 高 3倍以上,Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端来使用

  • Apache 的组件比 Nginx 多

  • 核心的区别:

    • apache是同步多进程模型,一个连接对应一个进程; nginx是异步的,多个连接(万级别)可以对应一个进程 。

    • nginx的优势是处理静态请求cpu内存使用率低; apache适合处理动态请求,所以现在一般前端用nginx作为反向代理抗住压力,apache作为后端处理动态请求。

描述:基于线上CentOS Linux云服务器,构建一套Nginx WEB服务器平台,主要部署的方式有两种:
YUM二进制方式:

  • 部署方式相对比较简单、快捷、高效,可以自动校验软件包的正确性,可以自动解决软件包之间的依赖关系,可以自动安装软件服务并且设置为系统服务,不能自定义软件服务特定的功能和模块,安装之后的文件和目录相对比较分散,不便于后期的维护和管理。

MAKE源码编译方式

  • 部署方式相对比较复杂、繁琐、低效,不能自动校验软件包的正确性,不能自动解决软件包之间的依赖关系,不能自动安装软件服务并且设置为系统服务,可以自定义软件服务特定的功能和模块,安装之后的文件和目录相对比较统一,便于后期的维护和管理。

我们利用Ngnix源码方式进行安装
安装环境:CentOS Linux release 7.6.1810 (Core) 3.10.0-957.5.1.el7.x86_64

2.1) 安装包以及依赖包下载
Nginx下载地址:http://nginx.org/en/download.html

Q:Mainline version、Stable version、Legacy version的版本区别?
A: Nginx官网提供了三个类型的版本,

  • Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版

  • Stable version:最新稳定版,生产环境上建议使用的版本

  • Legacy versions:遗留的老版本的稳定版

Nginx依赖包下载地址:

  • 1.gzip模块需要zlib库(http://www.zlib.net/)

  • 2.ssl功能需要openssl库(http://www.openssl.org/)

  • 3.rewrite模块需要pcre库(http://www.pcre.org/)

2.2) Nginx安装
描述:因为Nginx是基于C语言开发的源代码程序,默认是不能被Linux操作系统直接使用的,需要借助C编译器将源代码文件编译生成二进制文件,所以需执行源代码软件包部署三个步骤。

  • 预编译./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module
    主要是检测Linux系统安装该软件所需的依赖环境、库文件,检测Linux系统是否存在GCC编译环境(C编译器),指定软件服务部署的路径,自定义软件服务特定的功能和模块,最终会产生Makefile文件。

  • 编译 make -j 4
    主要是通过make编译工具,读取Makefile文件,调用Linux操作系统下GCC编译环境(C编译器),将软件包中的源代码文件编译生成二进制文件。
    Makefile文件用途,主要是告知make编译工具,在编译源代码文件时从哪个源码文件开始至哪个源码结束编译&记录依赖的信息。

  • 安装 make -j 4 install
    主要是将第二步make编译产生的二进制文件,拷贝或者安装至Linux操作系统指定的安装目录:--prefix=/usr/local/nginx/

2.3) nginx验证与启动

首先.安装Nginx采用yum或者apt,配置文件目录/etc/nginx/;

yum的方式安装Nginx的目录说明:

参考连接:http://nginx.org/en/linux_packages.html#RHEL-CentOS

(1)安装nginx

  • 1-进到homebrew官网,然后复制命令,预安装需要的东西

  • 2-brew install nginx 安装nginx

  • 3-nginx -v 显示版本号

(2)进入nginx cd /usr/local/etc/nginx 配置启动即可

Nginx常用命令

Nginx的Master-Worker模式
Nginx涉及Master进程和Worker进程,在Nginx启动后涉及了Socket服务进行监听;

  • Master进程的作用:读取并验证配置文件nginx.conf;管理worker进程;

  • Worker进程的作用:每一个Worker进程都维护一个线程(避免线程切换),处理连接和请求;注意Worker进程的个数由配置文件决定,一般和CPU个数相关(有利于进程切换),配置几个就有几个Worker进程;

1.我在B站学运维之Nginx反代服务器基础介绍与入门实践插图5

4.1 项目需求 httpd 服务 8080 端口(外网不能直接访问),通过nginx进行转发到 80进行访问;
4.2 对于以上需求进行设置修改nginx得conf/nginx.conf我将列出修改得得值

本文至此完毕,更多技术文章,尽情期待下一章节!

1.我在B站学运维之Nginx反代服务器基础介绍与入门实践插图6

已发布的相关历史文章(点击即可进入)

我在B站学运维之使用Let'sEncrypt免费颁发及自动续签泛域名(通配符)证书

我在B站学运维之如何让HTTPS站点评级达到A+? 还得看这篇HTTPS安全优化配置最佳实践

我在B站学运维之如何让HTTPS站点更加安全?这篇HTTPS安全加固配置最佳实践指南就够了

1.我在B站学运维之Nginx反代服务器基础介绍与入门实践插图6

欢迎各位志同道合的朋友一起学习交流,如文章有误请在下方留下您宝贵的经验知识,个人邮箱地址【master#weiyigeek.top】或者 个人公众号【WeiyiGeek】联系我。

1.我在B站学运维之Nginx反代服务器基础介绍与入门实践插图7

更多文章来源于【WeiyiGeek Blog – 为了能到远方,脚下的每一步都不能少】 个人博客。

个人主页: https://weiyigeek.top

博客地址: https://blog.weiyigeek.top

1.我在B站学运维之Nginx反代服务器基础介绍与入门实践插图8
https://weiyigeek.top – Always keep a beginner's mind, don't forget the beginner's mind

专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏【点个赞、投个币、收个藏、关个注,转个发、留个言】,这将对我的肯定,谢谢!。

  • echo "【点个赞】,动动你那粗壮的拇指或者芊芊玉手,亲!"

  • printf("%s", "【投个币】,万水千山总是情,投个硬币行不行,亲!")

  • fmt.Printf("【收个藏】,阅后即焚不吃灰,亲!")

  • System.out.println("【关个注】,后续浏览查看不迷路哟,亲!")

  • console.info("【转个发】,让更多的志同道合的朋友一起学习交流,亲!")

1.我在B站学运维之Nginx反代服务器基础介绍与入门实践插图9
谢谢,各位帅哥、美女四连支持!!这就是我的动力!

更多文章,请访问【个人博客 – https://blog.weiyigeek.top】站点,谢谢支持!

原文链接:https://www.bilibili.com/read/cv16149086/

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享