高性能服务器——Nginx基础

一、什么是Nginx

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

二、Nginx的作用

1、反向代理

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

2、负载均衡

负载均衡就是将一个任务分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。简单而言就是当有2台或2台以上服务器的时候,根据规则随机的将请求分发到指定的服务器上处理。负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。Nginx 目前支持自带的3种负载均衡策略,和2种常用的第三方策略。

3、HTTP服务器

Nginx 本身也是一个静态资源的服务,当只有静态资源的时候,就可以使用 Nginx 来做服务器。现在流行的动静分离,就可以通过Nginx 来实现。
动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。

4、正向代理

正向代理,是一个位于客户端和原始服务器(Origin Server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端,客户端才能使用正向代理。当需要把你的服务器作为代理服务器时,可以用 Nginx 来实现正向代理。

三、Nginx的优缺点

1、优点

  • 高并发量:根据官方给出的数据,能够支持高达 50000 个并发连接数的响应。

  • 简单稳定:配置简单,基本在一个 conf 文件中配置,性能比较稳定,可以 7*24 小时长时间不间断运行。

  • 内存消耗少:处理静态文件,同样是 web 服务,比 Apache 占用更少的内存及资源,所以它是轻量级的。

  • 模块化程度高:Nginx 是高度模块化的设计,编写模块相对简单,包括 gzipping,byte ranges,chunked responses,以及 SSI-filter 等 filter,支持 SSL 和 TLSSNI。

  • 支持rewrite重写规则:能够根据域名、URL的不同, 将HTTP请求分发到不同的后端服务器群组。

  • 低成本:Nginx 可以做高并发的负载均衡,且 Nginx 是开源免费的。和使用 F5 等硬件来做负载均衡相比,成本低。

  • 支持多系统:Nginx 代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX 以及 Microsoft Windows ,由于 Nginx 是免费开源的,可以在各系统上编译并使用。

2、缺点

  • 动态处理差:Nginx 处理静态文件时,耗费内存少,很优秀。但是在处理动态页面时则很鸡肋,现在一般前端用 Nginx 作为反向代理抗住压力,Apache 作为后端处理动态请求。

  • rewrite弱:虽然 Nginx 支持 rewrite 功能,但是和 Apache 相比,Apache 比 Nginx 的 rewrite 强大。

四、Nginx安装

1、获得安装包

  • 在官方网站下载源代码:
    开源版官网: [ Nginx .org](http:// Nginx .org)
    商业版官网: [ Nginx .com](http:// Nginx .com)
    我们可以打开如下官网连接,查看各个版本的信息:[http:// Nginx .org/en/download.html](http:// Nginx .org/en/download.html)
  • 主线版本:“Mainline version”,也有人称之为主干版或者开发版,主线版本通常是最新的版本,主线版通常会加入一些最新的功能,这些功能可能没有经过太多的测试,所以相对可能不太稳定,在真正的生产环境中,通常不会使用主线版本。
  • 稳定版本:“Stable version”,稳定版通常是由主线版发展而来的,稳定版通常是经过官方测试的,是官方认为相对稳定的版本,生产环境中通常会使用稳定版。
  • 历史版本:“Legacy version”,当新的稳定版出现,那么原先的稳定版就会被归类到"历史版本"中去。

2、解决依赖性

yum install gcc openssl-devel pcre-devel -y
yum install gd-devel-2.0.35-26.el7.x86_64.rpm -y	#这个安装包yum源中没有,需要在网上自行下载

3、编译安装Nginx

tar zxf Nginx-1.16.1.tar.gz 
cd Nginx-1.16.1
./configure --prefix=/usr/local/Nginx --with-http_realip_module --with-http_image_filter_module=dynamic --with-http_ssl_module
make && make install

可以使用./configure --help命令来查看可加模块信息:
(1)--prefix选项:使用--prefix选项可以指定 Nginx 编译安装的目录。
(2)--with-XXX_ module--without-XXX_ module :安装对应的模块或不安装对应的模块。

注意:

  • 如果没有使用 --with-XXX_ module 选项,那么默认不安装"XXX模块";
  • 如果没有使用--without-XXX_ module 选项,那么默认安装"XXX模块"。
  • --with-XXX_ module--without-XXX_ module 控制的都是"可选模块"。除了这些"可选模块" ,还有一些"标准模块"是默认安装的。

4、启动

cd /usr/local/Nginx
cd sbin/
./Nginx

5、各目录的作用

(1)conf 目录中存放了 Nginx 相关的配置文件。
(2)html 目录是默认提供的 web 服务的"根目录"。
(3)logs 目录是 Nginx 日志的存放目录。
(4)modules 目录中存放了一些模块会用到的库。
(5)sbin 目录中存放了 Nginx 的二进制文件,我们需要使用 Nginx 二进制文件启动 Nginx。

6、制作软链接

ln -s /usr/local/Nginx/sbin/Nginx /usr/local/sbin/

目的:在后续启动 Nginx 时就不需要使用 Nginx 二进制文件启动了,直接使用 Nginx 命令即可启动。

7、测试

在浏览器中输入 ip 地址,如果可以访问到 Nginx 默认发布页面,则说明安装成功。

五、Nginx配置文件语法

  • conf 目录中存放了 Nginx 相关的配置文件
  • Nginx 主配置文件为 nginx.conf

其中的语法为:

http{
	...
	...
	server{
		...
		...
		location ... {
			...
	server{
		...
		...
	}
}

上述示例可以分为三个逻辑部分:http 部分、server 部分、location 部分。或者说,上述示例可以分为三个逻辑块:http 块、server 块、location 块,每个块都是使用大括号{ }作为分界线的。
从缩进可以看出,它们是有层级关系的。http 中可以配置多个server,一个 server 中可以配多个 location。

  • Nginx 最基础的功能就是用来提供 http 服务,跟 http 有关的公共配置,可以放在 http 块中,http 块中又可以配置多个 server。
  • 每一个server 代表一个 http 服务,一台 Nginx 主机中可以同时配置多个 server,以便同时提供多个 http 服务,不同的 server 可以使用不同的配置,写入到某个 server 块中的配置对对应的 http 服务生效,如果多个 server 存在共同的公用配置,则可以将共同的配置写在 http 块中,以便多个 server 共享这些配置,一个 server 块中又可以有一个或多个 location。
  • 我们访问一个网络上的资源时,都是通过 url 访问的,可以把 location 当做 url 的一部分。eg:当我们访问"http://172.25.254.1/“这个 urI 时,这个 url 的最后一个”/"其实就是location。
  • location块中有两条配置指令,它们分别是 root 和 index 。
    root 配置指令的意思是:当前location所对应的文档根目录是哪里。root html:表示当前location的文档根目录是 htmI 目录。(文档根目录:当有人访问"/“这个路径时,去服务器的哪个目录中找对应的资源)
    eg:
    如果我在 htmI 目录中放了一张图片,图片名为 a.jpg,那么我就能通过"http://172.25.254.1/a.jpg"访问到这张图片。
    url 中的”/"对应了"location /“配置段,而"location/“又对应到了服务器的 htmI 目录,所以 url 中的”/“就与服务器的 html 目录建立了对应关系。
    当我们访问"http://172.25.0.1/a.jpg"这个地址时,其实访问的是服务器上 htmI 目录下的 a.jpg。htmI 目录就是当前 location 的资源目录。
    注意: 上例中的 htmI 路径是一个相对路径,是 Nginx 安装目录下的 html 目录。因为我将 Nginx 安装到了 /usr/local/nginx 目录中
    所以上例中的 html 目录的绝对路径就是”/usr/local/nginx /html/”

六、Nginx常用命令

  • Nginx:启动 Nginx 服务。
  • Nginx -h 或 Nginx -?:查看 Nginx 帮助。
  • Nginx -v :查看Nginx版本信息
  • Nginx -V:查看Nginx编译信息
  • Nginx -c:启动Nginx时指定主配置文件
  • Nginx -t 或 Nginx -T:测试 Nginx.conf 文件是否存在语法错误,如果配置文件中存在语法错误,那么相应的错误信息会输出。
    注意: Nginx.conf 中的配置指令需要以分号结尾,如果没有以分号结尾,会在启动 Nginx 时报语法错误。在启动 Nginx 服务之前,使用 Nginx -t 命令对 Nginx.conf 文件进行语法检查。
  • Nginx -s:向正在运行的 Nginx 主进程发送信号,信号的可用值有stop, quit, reopen, reload。
    stop:当 Nginx 服务启动时,停止 Nginx 服务。
    quit:与 stop 类似,quit 信号也是用于停止 Nginx 服务。quit 信号和 stop 信号的区别在于 Nginx 进程收到 stop 信号以后会立即停止服务。而收到 quit 信号后,不会再接收新的请求,但是会先处理完已经接受的链接请求,处理完这些请求之后再停止服务,这种停止方式被称之为"优雅的停止”。
    reload:在不停止服务的情况下重载配置文件,避免了因重启而造成的服务中断。
    reopen:使 Nginx 进程重新打开日志文件,以实现日志分割的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值