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的优点
- 高并发响应性能非常好,官方Nginx处理静态文件并发5w/s
- 反向代理性能非常强。(可用于负载均衡)
- 内存和cpu占用率低。(为Apache的1/5-1/10)
- 对后端服务有健康检查功能。
- 支持PHP cgi方式和fastcgi方式。
- 配置代码简洁且容易上手
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
在/usr/local目录下,可以看到Nginx目录,这个就是我们安装好了Nginx,接下来可以测
cd /usr/local/nginx/sbin/
./nginx #启动Nginx
service iptables stop #关闭防火墙
查看进程是否已启动
ps aux |grep nginx
4.3页面访问
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能做什么
- 反向代理
- 负载均衡
- HTTP服务器(包含动静分离)
- 正向代理