环境

  • 操作系统 CentOS7.9

包管理器直接安装

  • 创建 yum 源文件 /etc/yum.repos.d/nginx-nju.repo,内容如下

    1
    2
    3
    4
    5
    6
    7
    8
    
    echo '[nginx-stable]
    name=nginx stable repo
    #baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    baseurl=https://mirrors.nju.edu.cn/nginx/rhel/$releasever/$basearch/
    gpgcheck=0
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
  • 安装 nginx

    1
    2
    
    yum makecache
    yum install nginx
    

编译安装

  • 下载 stable 版本的 nginx 源码包,下载地址: https://nginx.org/en/download.html

  • 解压源码包,进入源码包根目录下

  • 检查依赖

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    ./configure \
        --prefix=$HOME/nginx \
        --with-threads \
        --with-compat \
        --with-http_addition_module \
        --with-http_auth_request_module \
        --with-http_gunzip_module \
        --with-http_gzip_static_module \
        --with-http_random_index_module \
        --with-http_realip_module \
        --with-http_secure_link_module \
        --with-http_slice_module \
        --with-http_ssl_module \
        --with-http_stub_status_module \
        --with-http_sub_module \
        --with-http_v2_module \
        --with-stream \
        --with-stream_realip_module \
        --with-stream_ssl_module \
        --with-stream_ssl_preread_module \
        --with-http_dav_module \
        --with-http_flv_module \
        --with-http_mp4_module
    
  • 在 centos 7.9 容器中编译时需要安装如下几个包

    1
    2
    3
    4
    
    gcc
    make
    openssl-devel
    pcre-devel
    
  • 编译安装

    1
    2
    
    make
    make install
    
  • 清空 nginx 配置文件($HOME/nginx/conf/nginx.conf),替换内容如下

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    #user nobody;
    worker_processes auto;
    error_log logs/error.log;
    pid logs/nginx.pid;
    worker_rlimit_nofile 65535;
    
    events {
        worker_connections 8192;
    }
    
    http {
        default_type application/octet-stream;
        log_format main '$remote_addr [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
        access_log logs/access.log main;
        gzip on;
        sendfile on;
        #tcp_nopush on;
        keepalive_timeout 65;
        include mime.types;
        include http.d/*.conf;
    }
    
    stream {
        log_format main '$remote_addr [$time_local] '
                        '$protocol $status $bytes_sent $bytes_received '
                        '$session_time "$upstream_addr" "$upstream_bytes_sent" '
                        '"$upstream_bytes_received" "$upstream_connect_time"';
        access_log logs/stream.log main;
        include stream.d/*.conf;
    }
    
  • 创建 nginx 配置子目录,清空 html 目录

    1
    2
    
    mkdir -p $HOME/nginx/conf/{http.d,stream.d}
    rm -f $HOME/nginx/html/*
    
  • 创建一个简单的 80 端口配置文件($HOME/nginx/conf/http.d/80.conf),内容如下

    1
    2
    3
    4
    
    server {
        listen 80;
        return 200 "Test nginx 80\n";
    }
    
  • 启动 nginx

    1
    
    $HOME/nginx/sbin/nginx