nginx简介
nginx时一款轻量级的Web服务器、反向代理服务器及邮件代理服务器; nginx的特点是占有内存少,并发能力强,稳定,功能丰富。
nginx优点
高并发连接:能够支撑5万并发连接(官方测试),实际生产环境中支撑2-3万并发连接数; 内存消耗少:在3万并发连接下,开启10进程才消耗150M; 配置文件简单:风格跟程序一样通俗易懂; 成本低廉:开源软件,免费使用; 支持Rewrite重写规则:能够根据域名、URL的不同,能够将HTTP请求分给不同的后端服务器群组; 内置的健康检查功能:如果后端的某台服务器宕机了,不会影响前端访问; 节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的header头; 稳定性高:用于反向代理,宕机的概率微乎其微; 模块化设计:模块可以动态编译; 外围支持好:文档全,二次开发和模块化较多; 支持热部署:可以不停机重新载入配置文件; 支持事件驱动、AIO(异步IO)、mmap(内存映射)等性能优化。
nginx的功能及应用类别
nginx的基本功能
静态资源的web服务器,能缓存打开的文件描述符; http、smtp、pop3协议的反向代理服务器; 缓存加速、负载均衡; 支持FastCGI(fpm、LNMP),uWSGI(Python)等 模块化(非DSO机制),过滤器zip、SSL及图像的大小调整 支持SSL
nginx的扩展功能
给予名称和IP的虚拟主机; 支持keepalive(长连接); 支持平滑升级; 定制访问日志、支持使用日志缓冲区提高日志存储性能; 支持URL重写; 支持路径别名; 支持基于IP及用户的访问控制; 支持速率限制,支持并发数限制。
nginx的应用类别
使用nginx结合FastCGI运行PHP、JSP(JAVA语言)、Perl等程序; 适应nginx做反向代理、负载均衡、规则过滤; 使用nginx运行静态HTML网页、图片; nginx与其他新技术的结合使用。
nginx的工作原理
nginx的模块直接被编译进nginx,属于静态编译方式; 启动nginx后,nginx的模块会被自动加载,与apache不一样; 在解析配置文件时,nginx的每个模块都有可能去处理某个请求,但是同一个请求只能有一个模块来完成 启动nginx时,会启动一个Master进程,这个进程不处理任何客户端的请求,主要用来产生worker线程,一个worker线程用来处理n个request请求。
nginx编译安装
[root@localhost ~]# groupadd -r nginx
[root@localhost ~]# useradd -r -M -s /sbin/nologin -g nginx nginx
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2523 100 2523 0 0 5859 0 --:--:-- --:--:-- --:--:-- 5881
[root@localhost ~]# sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo
[root@localhost ~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++
[root@localhost ~]# groupadd -r nginx
[root@localhost ~]# useradd -r -M -s /sbin/nologin -g nginx nginx
[root@localhost ~]# cd nginx-1.12.2
[root@localhost nginx-1.12.2]# ./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log
[root@localhost nginx-1.12.2]# make -j 2 && make install
[root@localhost nginx-1.12.2]# cd /usr/local/nginx
[root@localhost nginx]# echo "export PATH=/usr/local/nginx/sbin:$PATH" > /etc/profile.d/nginx.sh
[root@localhost nginx]# . /etc/profile.d/nginx.sh
[root@localhost nginx]# nginx
[root@localhost nginx]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:80 *:*