nginx 架构

  1. nginx采用的是多进程的方式工作的。
  2. nginx后台进程中包含一个master进程和多个worker进程,master进程主要用来管理worker进程,包含接收外界的信息。
  3. 将接收到的信号发送给各个worker进程,监控worker进程的状态,当worker进程出现异常退出后,会自动重新启动新的worker进程。
  4. worker进程则是专门用来处理用户请求的,各个worker进程之间是平等的并且相互独立,处理请求的机会也是一样的。
  5. 可以通过 ps -ef | grep nginx 查看nginx进程信息。

nginx 目录结构

  1. conf 目录是nginx所有配置文件目录。
文件 说明
fastcgi.conf fastcgi相关配置文件
fastcgi.conf.default fastcgi.conf的备份文件
fastcgi_params fastcgi的参数文件
fastcgi_params.default fastcgi的参数备份文件
scgi_params scgi的参数文件
scgi_params.default scgi的参数备份文件
uwsgi_params uwsgi的参数文件
uwsgi_params.default uwsgi的参数备份文件
mime.types 记录的是HTTP协议中的Content-Type的值和文件后缀名的对应关系
mime.types.default mime.types的备份文件
nginx.conf 这个是Nginx的核心配置文件
nginx.conf.default nginx.conf的备份文件
koi-utf、koi-win、win-utf 这三个文件都是与编码转换映射相关的配置文件,用来将一种编码转换成另一种编码
  1. html 目录是nginx存放自带的两个静态的Html页面目录
文件 说明
50x.html 50x 失败后的失败页面
index.html 成功访问的默认首页
  1. logs 目录用于记录nginx服务启动后的日志文件。
文件 说明
access.log 请求日志文件
error.log 错误日志文件
nginx.pid 记录 nginx PID
  1. sbin 目录用于存放执行程序文件目录。
文件 说明
nginx 控制Nginx的启动和停止命令的可执行文件

nginx 命令

信号控制

  1. 查看master进程的进程号ID:

    • ps -ef | grep nginx 命令。
    • 通过 logs/nginx.pid 文件。
  2. 信号:调用命令 kill -signal PID

信号 说明 举例
TERM/INT 立即关闭整个服务 kill -INT PID / kill -INT `cat /usr/local/nginx/logs/nginx.pid`
QUIT “优雅"地关闭整个服务 kill -QUIT PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`
HUP 重读配置文件并使用服务对新配置项生效 kill -HUP PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`
USR1 重新打开日志文件,可以用来进行日志切割 kill -USR1 PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`
USR2 平滑升级到最新版的nginx kill -USR2 PID / kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
WINCH 所有子进程不在接收处理新连接,相当于给work进程发送QUIT指令 kill -WINCH PID /kill -WINCH `cat /usr/local/nginx/logs/nginx.pid`

命令行

  1. 通过 nginx -h 查看支持那些参数。
参数 说明 举例
-?,-h 显示帮助信息 nginx -h
-v 打印版本号信息并退出 nginx -v
-V 打印版本号信息和配置信息并退 nginx -V
-t 测试nginx的配置文件语法是否正确并退出(常用) nginx -t
-T 测试nginx的配置文件语法是否正确并列出用到的配置文件信息然后退出 nginx -T
-s 信号(常用) nginx -s reload
stop[快速关闭,类似于TERM/INT信号的作用] nginx -s stop
quit[优雅的关闭,类似于QUIT信号的作用] nginx -s quit
reopen[重新打开日志文件类似于USR1信号的作用] nginx -s reopen
reload[类似于HUP信号的作用] nginx -s reload
-p 指定Nginx的prefix路径,(默认为: /usr/local/nginx/) 常用指定自定义目录
-c 指定Nginx的配置文件路径,(默认为: conf/nginx.conf) 常用指定自定义文件
-g 用来补充Nginx配置文件,向Nginx服务指定启动时应用全局的配置

安装

docker-compose.yml

version: '3.9'
services:
  nginx:
    image: nginx:1.20.2
    container_name: nginx
    privileged: true
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      #- ./docker/nginx/html:/usr/share/nginx/html
      #- ./docker/nginx/cert:/etc/nginx/cert
      #- ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
      #- ./docker/nginx/conf.d:/etc/nginx/conf.d
      #- /app/docker/nginx/logs:/var/log/nginx
    environment:
      - TZ=Asia/Shanghai
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost" ]
      interval: 30s
      timeout: 10s
      retries: 3
    networks:
      - default_net

networks:
  default_net:
    driver: bridge
  1. 启动命令。
$ docker-compose -p nginx up -d