初识Nginx及源码编译安装

初识Nginx

简介

Nginx是一款优秀的服务器,主要的应用场景为:静态资源服务器、API服务器、反向代理服务器。Nginx作为反向代理服务器具备两个功能:高效缓存加速和负载均衡。

Nginx的优点

  • 高并发与高性能并存(一般二者同时做到很难)
  • 可扩展性能好(模块化设计)
  • 高可靠性(一般企业用于入口负载均衡,可以长时间运行而不宕机)
  • 热部署(可以平滑升级nginx,而不用粗暴重启在线业务,不用断开已建立的连接)
  • BSD许可证(该授权表示可以对Nginx进行修改定制并用于商业用途)

    Nginx的组成

  • nginx二进制可执行文件
  • nginx.conf配置文件
  • access.log访问日志
  • error.log错误日志

    Nginx版本发布

  • version 版本号(单数为mainline非稳定版本,双数为stable稳定版本)
  • feature 新增功能说明
  • bug bugfig信息
  • change 重构内容

目前流行的Nginx发行版:

  • nginx
  • nginxplus(nginx的商业版)
  • Tengine(alibaba公司发布的基于nginx二次开发的版本)
  • openresty(支持lua的nginx版本)
  • openresty商业版

编译自己的nginx

nginx采用模块化的设计,因此有很多内置及非内置优秀的nginx模块,我们可以在编译安装时通过一些选项定制nginx,选择去掉或新增编译某些nginx模块。

1.下载nginx源码

登录nginx官网<nginx.org>下载源码并解压,一般来说选择稳定版本即双数版本号的版本。

源码目录

  • auto/ # 存放一些安装辅助工具,比如系统信息检测脚本等
  • CHANGES # 说明本次版本的特性和一些bugfix信息
  • CHANGES.ru # 俄语版本
  • conf/ # nginx的配置文件示例,安装后会自动拷入安装目录下
  • contrib/ # 用于vim的语法高亮设置,需要手动拷入vim的相关目录(非必须)
  • configure # 安装过程需要用到的可执行配置脚本,./configure执行
  • html/ #存放了两个标准的html,50x.html,index.html
  • man/ # linux下的nginx帮助手册
  • src/ # nginx的源码

2.编译

1
2
3
./configure --help # 查看可配置参数
# 其中有--with前缀的选项和--without前缀的选项
# --with选项用于手动开启模块编译,这些模块通常都是默认不编译的,--without选项恰好相关,默认是编译进nginx的。
1
2
./configure --prefix=/path/to/install/nginx/
# ./configure执行完成后会在当前目录下生成一个objs目录,用于存放编译所需要的中间文件,其中modules.c文件写了本次将会编译那些模块。
1
2
3
make
# 注:执行完make后会生成也会生成目录/path/to/install/nginx/和一些中间文件会存放在当前目录的objs/中,为了以后更好的nginx升级,我们可以将objs目录拷入到制定的nginx安装目录/path/to/install/nginx/下,在执行make install。
make install

Nginx配置文件

语法简介

  • nginx配置文件以指令和指令块组成;
  • 指令以;结尾
  • 指令块包含在{}中
  • 可以用include指令包含另一个配置文件的内容
  • #表示注释
  • $表示引用nginx自身变量
  • 部分指令的参数支持正则表达式

    配置参数

  • 时间单位:ms, s, m, h, d, w, M, y
  • 空间单位: , k/K, m/M, g/G (空默认为字节)

    http指令块

    http指令块中包含http,server, location, upstream (待矫正!!!!!!)

    Nginx命令行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    nginx -s reload # 重载配置文件
    nginx -?/ nginx -h # 帮助文档
    nginx -c /path/to/conffile # 重新指定配置文档路径(不使用默认配置)
    nginx -g xxxxxx #指定配置指令(想要单独覆盖某条配置时使用)
    nginx -p /path/to/run # 指定nginx的运行目录
    nginx -s xxx # 发送信号
    # 信号类型:
    # 1.stop(立即停止);
    # 2.quit(优雅退出);
    # 3.reload(重新加载配置文件);
    # 4.reopen(重新记录日志)
    nginx -t/ nginx -T # 测试配置文件是否存在语法错误
    nginx -v # 版本信息
-------------本文结束感谢您的阅读-------------
0%