Tian Jiale's Blog

NGINX 入门指导

简介

Nginx 是一款轻量级的 HTTP 服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的 IO 性能,时常用于服务端的反向代理负载均衡

快速入门

安装 nginx

sudo apt-get install nginx

卸载 nginx

sudo apt-get uninstall nginx

启动 nginx

nginx

停止 nginx

nginx -s stop

热重启 nginx

nginx -s reload

CentOS 中安装

安装编译工具及库文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

安装 下载 PCRE

PCRE 作用是让 Nginx 支持 Rewrite 功能。

这里有两个非常容易出问题的地方,第一个是安装 PCRE 的版本,在 PCRE 官网中我们得知 PCRE2 在 2015 年已经发布了,按照软件更新的规律,现在 NGINX 应该可以支持 PCRE2,但经过实际安装试错发现它并没有支持 PCRE2,在 StackOverflow 上更是说需要用 PCRE。

第二个问题是在编译 NGINX 时的编译参数问题,--with-pcre--with-pcre= 都加上肯定没问题,问题出在 --with-pcre= 的目录上,正如这一小节标题所说,正常安装 PCRE 并将库文件目录指定给 NGINX 是不行的,在同时指定 openssl 和 pcre 时,必须指定这两个项目的源码,因为 openssl 系统已经有了,所以我们需要指定 pcre 的源码,在其不再支持第一版后,最终版本就是 8.45。

  1. 下载 PCRE 源文件,下载地址

    再把文件传到服务器上。

  2. 解压代码包。

    unzip pcre-8.45.zip
    

安装 Nginx

  1. 下载 Nginx,下载地址

    cd /usr/local/src/
    wget https://nginx.org/download/nginx-1.20.1.tar.gz
    
  2. 解压安装包

    tar zxvf nginx-1.20.1.tar.gz
    
  3. 编译安装

    # 添加用户和组
    groupadd www
    useradd -g www www
    
    # 进入安装目录
    cd nginx-1.20.1/
    
    # 配置
    ./configure \
    --user=www \
    --group=www \
    --prefix=/usr/local/nginx \
    --with-stream \
    --with-stream_ssl_preread_module \
    --with-http_ssl_module \
    --with-http_stub_status_module \
    --with-http_realip_module \
    --with-http_dav_module \
    --with-http_gzip_static_module \
    --with-http_v2_module \
    --with-pcre \
    --with-pcre=/usr/local/src/pcre-8.45
    
    # 编译并安装
    make && make install
    

修改配置

设置开机自启动

  1. 在系统服务目录里创建 nginx.service 文件

    vi /usr/lib/systemd/system/nginx.service
    
  2. 写入内容如下

    [Unit]
    Description=nginx
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s quit
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    

    [Unit]: 服务的说明

    Description: 描述服务

    After: 描述服务类别

    [Service]: 服务运行参数的设置

    Type=forking: 是后台运行的形式

    ExecStart 为服务的具体运行命令

    ExecReload 为重启命令

    ExecStop 为停止命令

    PrivateTmp=True 表示给服务分配独立的临时空间

    注意:[Service] 的启动、重启、停止命令全部要求使用绝对路径

    [Install] 运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为 3

  3. 设置开机自启动

    systemctl enable nginx.service
    

    该步骤之后需要重启服务器才能成功配置。

常用目录 (in docker)

  • /etc/nginx/nginx.conf nginx 配置文件路径
  • /usr/share/nginx/html nginx 服务器默认的根目录
  • /var/log/nginx nginx 服务器默认的日志目录

配置文件结构

...              #全局块

events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    server        #server块
    {
        ...       #server全局块
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN]
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}
  • 全局块:配置影响 nginx 全局的指令。一般有运行 nginx 服务器的用户组,nginx 进程 pid 存放路径,日志存放路径,配置文件引入,允许生成 worker process 数等。
  • events 块:配置影响 nginx 服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网络连接,开启多个网络连接序列化等。
  • http 块:可以嵌套多个 server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type 定义,日志自定义,是否使用 sendfile 传输文件,连接超时时间,单连接请求数等。
  • server 块:配置虚拟主机的相关参数,一个 http 中可以有多个 server。
  • location 块:配置请求的路由,以及各种页面的处理情况。

官方文档: 连接