本章目录
-
1.Ngnix介绍
-
2.Nginx安装
-
2.0 源码安装
-
2.1 yum安装nginx
-
2.2 mac安装Nginx
-
3.Nginx管理与工作模式
-
4.Nginx转发简单实例
官方描述: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多路复用(多线程)?
架构体系:
动静分离是每个网站发展到一定规模之后必然的结果。
-
静态网页一般是跟后端数据库不发生交互的网页,其网页内容很少更新或者几乎不更新,网页文件后缀命名通常是以
.htm、.html、.xml
结尾的。 -
动态网页一般是跟后端数据库发生交互的网页,其网页内容经常更新或者随着后端数据库内容变化而更新,网页文件后缀命名通常是以
.asp、.jsp、.php
结尾的。
静态请求则应当最好将其拆分并启用独立的域名,既便于管理的需要也便于今后能够快速支持CDN。
如果一台Nginx性能无法满足,则可以考虑在Nginx前端添加LVS负载均衡
,由多台Nginx共同分担网站请求。
新版Nginx目前已经支持直接读写Memcache,可以编译安装时候选择添加此类模块,从而节省了转交给PHP或者JPS等动态程序服务器处理时间,提高效率的同时,减小了动态服务器的负载。
使用场景:(Nginx有点入口网关的味道)
补充:
目前 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进程;
4.1 项目需求 httpd 服务 8080 端口(外网不能直接访问),通过nginx进行转发到 80进行访问;
4.2 对于以上需求进行设置修改nginx得conf/nginx.conf我将列出修改得得值
本文至此完毕,更多技术文章,尽情期待下一章节!
已发布的相关历史文章(点击即可进入)
我在B站学运维之使用Let'sEncrypt免费颁发及自动续签泛域名(通配符)证书
我在B站学运维之如何让HTTPS站点评级达到A+? 还得看这篇HTTPS安全优化配置最佳实践
我在B站学运维之如何让HTTPS站点更加安全?这篇HTTPS安全加固配置最佳实践指南就够了
欢迎各位志同道合的朋友一起学习交流,如文章有误请在下方留下您宝贵的经验知识,个人邮箱地址【master#weiyigeek.top】或者 个人公众号【WeiyiGeek】联系我。
更多文章来源于【WeiyiGeek Blog – 为了能到远方,脚下的每一步都不能少】 个人博客。
个人主页: 【 https://weiyigeek.top 】
博客地址: 【 https://blog.weiyigeek.top 】
专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏【点个赞、投个币、收个藏、关个注,转个发、留个言】,这将对我的肯定,谢谢!。
-
echo "【点个赞】,动动你那粗壮的拇指或者芊芊玉手,亲!"
-
printf("%s", "【投个币】,万水千山总是情,投个硬币行不行,亲!")
-
fmt.Printf("【收个藏】,阅后即焚不吃灰,亲!")
-
System.out.println("【关个注】,后续浏览查看不迷路哟,亲!")
-
console.info("【转个发】,让更多的志同道合的朋友一起学习交流,亲!")
更多文章,请访问【个人博客 – https://blog.weiyigeek.top】站点,谢谢支持!
原文链接:https://www.bilibili.com/read/cv16149086/