版权声明:未经本人允许严禁转载 https://blog.csdn.net/WanJiaBaoBao/article/details/83144498
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编译安装
- 创建系统用户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++
- 创建nginx用户和组
[root@localhost ~]# groupadd -r nginx
[root@localhost ~]# useradd -r -M -s /sbin/nologin -g nginx 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
- 启动nignx服务
[root@localhost nginx]# nginx
[root@localhost nginx]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:80 *:*