Nginx学习笔记:安装、运行

本文更新于2024-08-15。

安装

各系统的安装包可于官网https://nginx.org/en/download.html下载。

Windows下安装

http://nginx.org/download/nginx-1.16.1.zip下载安装包,并解压,解压目录即为安装目录。

Linux下安装

本文的安装目录为/usr/local/nginx,可自行定义。

  1. 创建用户:

    sudo groupadd nginxd
    sudo useradd -g nginxd nginxd
    
  2. 创建安装目录:

    cd /usr/local
    sudo mkdir nginx
    sudo chown nginxd:nginxd nginx
    
  3. 安装依赖库及nginx:

    • CentOS 7.5下安装nginx 1.16:
      sudo yum install openssl-devel
      sudo yum install pcre-devel
      sudo yum install zlib-devel
      
      wget http://nginx.org/download/nginx-1.16.1.tar.gz
      tar -xvz -f nginx-1.16.1.tar.gz
      cd nginx-1.16.1
      ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre
      make
      sudo make install
      
    • Debian 8.9下安装nginx 1.16(CentOS 7.5下安装nginx 1.16也适用):
      cd /usr/local/src
      sudo wget https://www.openssl.org/source/openssl-1.1.1f.tar.gz
      sudo wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz
      sudo wget http://www.zlib.net/zlib-1.2.11.tar.gz
      sudo tar -xvz -f openssl-1.1.1f.tar.gz
      sudo tar -xvz -f pcre-8.44.tar.gz
      sudo tar -xvz -f zlib-1.2.11.tar.gz
      
      wget http://nginx.org/download/nginx-1.16.1.tar.gz
      tar -xvz -f nginx-1.16.1.tar.gz
      cd nginx-1.16.1
      ./configure --prefix=/usr/local/nginx --with-http_stub_status_module \
      	--with-http_ssl_module --with-openssl=/usr/local/src/openssl-1.1.1f \
      	--with-pcre=/usr/local/src/pcre-8.44 \
      	--with-zlib=/usr/local/src/zlib-1.2.11
      make
      sudo make install
      
    • Debian 12.6 (bookworm)下安装nginx 1.26.1:
      sudo apt install libssl-dev
      sudo apt install libpcre3-dev
      
      wget https://nginx.org/download/nginx-1.26.1.tar.gz
      tar -xvz -f nginx-1.26.1.tar.gz
      cd nginx-1.26.1
      ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre
      make
      sudo make install
      

    ./configure参数含义如下:

    • --prefix=DIR:安装目录。
    • --with-http_ssl_module:启用ngx_http_ssl_module模块,用于支持SSL。需要安装openssl依赖。
    • --with-http_stub_status_module:启用ngx_http_stub_status_module模块,用于监控nginx状态。
    • --with-openssl=DIR:OpenSSL库的目录。
    • --with-pcre[=DIR]:使用PCRE库支持正则表达式。需要安装pcre依赖。
    • --with-zlib=DIR:使用zlib库支持压缩算法。需安装zlib依赖。

    注意make install会覆盖此前安装的所有文件,包括配置文件。

  4. 权限配置:

    sudo chown -R nginxd:nginxd /usr/local/nginx
    

    在/usr/local/nginx/conf/nginx.conf开头增加一行:

    user nginxd;
    

运行

官方文档:https://nginx.org/en/docs/switches.html

可执行程序为安装目录下的sbin/nginx(本文为/usr/local/nginx/sbin/nginx)。

运行nginx时不使用参数,会启动nginx服务,包含主进程和工作进程两个nginx进程。

运行nginx时也可使用以下参数:

  • -?, -h:查看帮助。
  • -c filename:设置配置文件名(默认为conf/nginx.conf)。
  • -g directives:设置配置文件之外的全局指令。
  • -p prefix:设置路径前缀(默认无)。
  • -q:检查配置期间禁止打印非错误消息。
  • -s signal:发送信号至主进程,signal可为:
    • stop:强制停止服务。
    • quit:优雅退出服务。
    • reopen:打开新的日志文件。需要先重命名原来的日志文件。
    • reload:重新加载配置文件。会启动新的工作线程,并优雅关闭旧的工作线程。
  • -t:检查配置后退出。
  • -T:检查配置后退出,会将配置打印至标准输出。
  • -v:打印版本号后退出。
  • -V:打印版本号、编译器版本号、编译配置参数后退出。

日志

请求日志为安装目录下的logs/access.log。

请求日志使用组合日志格式,各字段依次为:

  1. 客户端主机名或IP。
  2. ident查找的用户名。
  3. 已认证的用户名。
  4. 日期时间,以“[]”扩起。
  5. 请求行,以“""”引起。
  6. 响应状态码。
  7. 响应Content-Length,如无则为0。
  8. 请求Referer。
  9. 请求User-Agent。

systemd配置

如需使用systemd启动nginx,则修改配置文件/lib/systemd/system/nginxd.service:

[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
Restart=on-failure
 
[Install]
WantedBy=multi-user.target

Docker下运行

docker container create --network host --name nginx nginx
docker start nginx

容器中的目录结构:

  • /etc/nginx/:配置文件、证书文件目录。
    • nginx.conf:配置文件。
    • cert/:证书文件目录。
  • /usr/sbin/nginx:可执行文件。
  • /usr/share/nginx/html:静态文件目录。

在容器中执行nginx命令,如:

docker container exec -it nginx nginx -t
posted @ 2020-04-10 19:01  garvenc  阅读(1172)  评论(0编辑  收藏  举报