1.什么是Nginx

nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。

2.Nginx的特点和组成

  • 特点:Nginx特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好
  • 组成:Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单

Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。

Nginx的模块从结构上分为核心模块、基础模块和第三方模块:

  • 核心模块:HTTP模块、EVENT模块和MAIL模块
  • 基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块,
  • 第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。

Nginx的高并发得益于其采用了epoll模型,与传统的服务器程序架构不同,epoll是linux内核2.6以后才出现的。Nginx采用epoll模型,异步非阻塞,而apache采用的是select模型:

Select特点:select 选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,select需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率是非常低。
epoll的特点:epoll对于句柄事件的选择不是遍历的,是事件响应的,就是句柄上事件来就马上选择出来,不需要遍历整个句柄链表,因此效率非常高。

3.Nginx的优点

  1. 高并发响应性能非常好,官方Nginx处理静态文件并发5w/s
  2. 反向代理性能非常强。(可用于负载均衡)
  3. 内存和cpu占用率低。(为Apache的1/5-1/10)
  4. 对后端服务有健康检查功能。
  5. 支持PHP cgi方式和fastcgi方式。
  6. 配置代码简洁且容易上手

4.Nginx安装

4.1 上传解压

我们使用xftp将nginx-1.14.0.tar.gz 上传到/usr/local 后并解压

tar -zxvf nginx-1.14.0.tar.gz
4.2 编译环境gcc g++ 开发库之类的需要提前装好
yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

yum install pcre-devel
4.3 nginx安装

进入解压目录

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

注意:上边./configure将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录

编译 安装

cd nginx-1.14.0
make &&make install

至此 安装完成
检查nginx配置文件是否正确

/usr/local/nginx/sbin/nginx -t

nginx nat上网 nginx!_Nginx

在/usr/local目录下,可以看到Nginx目录,这个就是我们安装好了Nginx,接下来可以测

cd /usr/local/nginx/sbin/
./nginx                     #启动Nginx

service iptables  stop     #关闭防火墙

查看进程是否已启动

ps aux |grep nginx

nginx nat上网 nginx!_Nginx_02

4.3页面访问

nginx nat上网 nginx!_HTTP_03

4.4 卸载nginx

删除nginx文件即可

rm -rf /usr/local/nginx

5.Nginx常用命令

查看nginx进程

ps -ef|grep nginx或者ps aux |grep nginx

说明:nginx的进程由主进程和工作进程组成。

启动nginx:

/usr/local/nginx/sbin/nginx

说明:启动结果显示nginx的主线程和工作线程,工作线程的数量跟nginx.conf中的配置参数worker_processes有关。

平滑启动nginx(热启动,无需关闭就可以让配置生效):

/usr/local/nginx/sbin/nginx -s reload

其中进程文件路径在配置文件nginx.conf中可以找到。
平滑启动的意思是在不停止nginx的情况下,重启nginx,重新加载配置文件,启动新的工作线程,完美停止旧的工作线程。

停止nginx:

pkill -9 nginx

/usr/local/nginx/sbin/nginx -s stop

6.Nginx能做什么

  1. 反向代理
  2. 负载均衡
  3. HTTP服务器(包含动静分离)
  4. 正向代理