简介
Nginx
是一个轻量级的、高性能的、基于Http
的、反向代理服务器,静态web
服务器。Nginx
最初是由俄罗斯人Igor Sysoev
(伊戈尔-塞罗耶夫)使用C语言为俄罗斯访问量第二的Rambler.ru
站点开发的一款服务器,2004年10月发布第一个版本。国内大型的站点,例如百度、京东、新浪、网易、淘宝等,都使用了Nginx
。Nginx
的官网:nginx.org
代理服务器
正向代理
隐藏
翻墙
提速
缓存
反向代理
保护隐藏
分布式路由
负载均衡
动静分离
正向代理与反向代理区别
- 正向代理的客户端清楚自己访问的服务器,而反向代理不清楚。
- 正向代理的代理服务器架设在客户端,而反向代理的代理服务器架设在服务端。
Nginx的特点
高并发
一个Nginx
服务器在不做任何配置的情况下并发量可达1000
左右,在硬件条件允许的前提下,Nginx
可支持高达5-10
万的并发量(除了Nginx
的设置外,Linux
主机需要做大量的设置配合Nginx
)。
对比一下Tomcat
,Tomcat
服务器默认的并发量为150
(不做任何配置),当有超过150
个用户同时访问某Servlet
时,Tomcat
的响应就会变得非常慢。
低消耗
官方给出的测试结果,10000
个非活跃连接,在Nginx
中仅消耗2.5M
内存,对于一般性的Dos
攻击来说就不是事儿,但对于DDos
也会是问题。举个简单的例子理解Dos
和DDos
两种攻击,如下:
-
Dos
攻击:服务不可用,它攻击的是信息安全中的不可用性,例如:很多个人在一台ATM机上面取钱,正在取钱那个人打算取2万块钱,但是他每次只取1百,导致后面的人不能使用ATM机取钱,虽然说是攻击,但是它提交的都是合法的请求。 -
DDos
攻击:是针对分布式系统的,例如系统有一堆的ATM机,那么我就来一堆人,像上面的Dos一样,占用了所有的ATM机。
热部署
可以在7*24
小时不间断服务的前提下,进行Nginx
版本的平滑升级,Nginx
配置文件平滑修改,即在不停机的情况下升级Nginx
,修改替换Nginx
配置文件。
高可用
Nginx
之所以可以实现高并发,是因为其具有很多工作进程worker
,当这些工作进程中的某些出现问题停止工作时,并不会影响整个系统的整体运行,因为其他worker
会接替那些出问题的线程。
高扩展
Nginx
之所以现在的用户很多,是因为很多功能都已经开发好并模块化,若需要哪些功能,只需要安装相应功能的扩展模块即可。根据编写扩展模块所使用的语言不同,可以划分为两类:C
语言扩展模块与LUA
脚本扩展模块。
Nginx下载安装
Nginx下载
进入Nginx
官网:nginx.org下载对应的版本。
Nginx安装
- 首先将下载好的
Nginx
上传到主机的/usr/tools
目录。 - 由于
Nginx
是由C/C++
语言编写的,所以对其进行编译就必须要使用相关的编译器,对于C/C++
语言的编译器,使用最多的是gcc
与gcc-c++
,而这两款编译器在CentOS7
中是没有安装的,所以首先要安装这两款编译器。操作如下图所示
- 安装依赖库,基本的
Nginx
功能依赖于一些基本的库,在安装Nginx
之前需要提前安装这些库。如下图所示
- 创建解压目录,在
/usr
下创建apps
目录,用于存放解压
- 解压
Nginx
,将Nginx
解压到/usr/apps
目录中。
- 生成
makefile
,在Nginx
解压目录下运行make
命令,用于完成编译,但此时会给出提示:没有指定目标,并且没有发下编译文件makefile
。编译命令make
需要根据编译文件makefile
进行编译,所以在编译之前需要先生成编译文件makefile
,使用configure
命令可以生成该文件。
- 编译安装,如下图所示
Nginx命令
- 查看命令选项
./nginx -h
,可以查看Nginx
命令的选项,如下图所示
./nginx -v
查看Nginx
版本信息,如下图所示
./nginx -V
查看更多Nginx
版本信息,例如gcc
版本,OpenSSL
的版本等,如下图所示
./nginx -t
测试配置文件是否正确,默认只测试默认的配置文件conf/nginx.conf
;./nginx -T
测试配置文件是否正确,并显示配置文件内容;./nginx -tq
在配置文件测试过程中,禁止显示非错误信息,只显示错误信息。可以结合-c
选项所指定要测试的配置文件,注意,其不会启动Nginx
。
./nginx -s stop/quit
可以停止Nginx
。./nginx -s stop
:强制停止Nginx
,无论当前工作进程是否正在处理工作./nginx -s quit
:优雅停止Nginx
,使当前的工作进程完成当前工作后停止。
./nginx -s reload
在不重启Nginx
的前提下重新加载Nginx
配置文件,平滑启动
./nginx -P
指定Nginx
配置文件的存放路径。./nginx -c file
可启动Nginx
,-c
指定启动的配置文件路径,启动成功后无任何显示。若不指定配置文件,则默认加载的是Nginx
安装目录下的conf/nginx.conf
。
测试
- 关闭防火墙,如下图所示
- 浏览器访问,由于
Nginx
服务器默认的端口号为80
,所以在浏览器中直接输入Nginx
主机的IP
,就可以看到Nginx
欢迎页面,只要看到以下页面信息,则说明Nginx
安装运行成功。