Nginx的编译安装和功能介绍

Nginx的编译安装和功能介绍

nginx介绍
nginx: engine X,是由1994年毕业于俄罗斯国立莫斯科鲍曼科技大学的同学为俄罗斯rambler.ru公司开发的,开发工作最早从2002年开始,第一次公开发布时间是2004年10月4日,版本号是0.1.0
nginx有商业版和社区版,2019年3月11日F5 Networks 6.7亿美元的价格收购
nginx 是免费,开源,高性能的HTTP和反向代理服务器,邮件代理服务器,通用TCP/UDP代理服务器
解决C10K问题(10K Connections) 
官网:http://nginx.org
nginx的其它的二次发行版:
    Tengine:由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。从2011年12月开始,Tengine成为一个开源项目,官网 http://tengine.taobao.org/
    OpenResty:基于 Nginx 与 Lua 语言的高性能 Web 平台, 章亦春官网:http://openresty.org/cn/
特性:
    模块化设计,较好的扩展性
    高可靠性
    支持热部署:不停机更新配置文件,升级版本,更换日志文件
    低内存消耗:10000个keep-alive连接模式下的非活动连接,仅需2.5M内存
    event-driven,aio,mmap,sendfile
基本功能:
    静态资源的web服务器
    http协议反向代理服务器
    pop3/imap4协议反向代理服务器
    FastCGI(LNMP),uWSGI(python)等协议
    模块化(非DSO),如zip,SSL模块
nginx架构

在这里插入图片描述

nginx的程序架构
web服务相关的功能:
    虚拟主机(server)
    支持 keep-alive 和管道连接( 共享TCP连接发起并发的HTTP请求)
    访问日志(支持基于日志缓冲提高其性能)
    url rewrite
    路径别名
    基于IP及用户的访问控制
    支持速率限制及并发数限制
   重新配置和在线升级而无须中断客户的工作进程
    Memcached 的 GET 接口
nginx的程序架构:
    master/worker结构
    一个master进程:
        负载加载和分析配置文件、管理worker进程、平滑升级
    一个或多个worker进程
       处理并响应用户请求
    缓存相关的进程:
        cache loader:载入缓存对象
        cache manager:管理缓存对象
nginx模块
nginx高度模块化,但其模块早期不支持DSO机制;1.9.11版本支持动态装载和卸载
模块分类:
    核心模块:core module
    标准模块:
        • HTTP 模块: ngx_http_*
            HTTP Core modules 默认功能
            HTTP Optional modules 需编译时指定
        • Mail 模块 ngx_mail_*
        • Stream 模块 ngx_stream_*
    第三方模块

在这里插入图片描述

核心模块:是 Nginx 服务器正常运行 必不可少 的模块,提供 错误日志记录 、配置文件解析 、 事件驱动机制 、 进程管理 等核心功能
标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应头设置 等等
可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如: Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等 
邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、IMAP 协议和 SMTP协议的支持
第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如:Json 支持、 Lua 支持等
nginx的功用
静态的web资源服务器
    html,图片,js,css,txt等静态资源
结合FastCGI/uWSGI/SCGI等协议反向代理动态资源请求
http/https协议的反向代理
imap4/pop3协议的反向代理
tcp/udp协议的请求转发(反向代理)
nginx的安装
官方yum源:
    http://nginx.org/packages/centos/7/x86_64/
Fedora-EPEL源:
    https://mirrors.aliyun.com/epel/7/x86_64/
编译安装:
    • yum install gcc pcre-devel openssl-devel zlib-devel
    • useradd -r -s /sbin/nologin nginx
    • ./configure --prefix=/apps/nginx --conf-path=/etc/nginx/nginx.conf --errorlog-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --
pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --
group=nginx --with-http_ssl_module --with-http_v2_module --withhttp_dav_module --with-http_stub_status_module --with-threads --with-file-aio
    • make && make install
编译安装示例
#useradd -r -s /sbin/nologin nginx
#./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
#make && make install
nginx目录结构和命令
ls /apps/nginx/
    html是测试页,sbin是主程序
ls /apps/nginx/sbin/
    nginx 只有一个程序文件
ls /apps/nginx/html/
    50x.html index.html 测试网页
nginx:默认为启动nginx
    -h 查看帮助选项
    -V 查看版本和配置选项
    -t 测试nginx语法错误
    -c filename 指定配置文件(default: /etc/nginx/nginx.conf) -s signal 发送信号给master进程,signal:stop, quit, reopen, reload 
        示例: nginx -s stop 停止nginx 
              nginx -s reload 加载配置文件
    -g directives 在命令行中指明全局指令

版权声明:本文为weixin_43570812原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。