Nginx(一)概述

1 概述

Nginx (engine x) 是一个轻量级的高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP邮件服务。Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0 发布于 2004 年 10 月 4 日。

Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行,其特点是占有内存少,并发能力强

备注:'web服务器'和'应用服务器'的区别-->前者是'静态'、后者是'动态'
 
web服务器:nginx、apache、openrestry
 
应用服务器:tomcat、weblogic'收费'、jetty、Jboss

​2 工作模式

nginx 有两种工作模式:master-worker 模式和单进程模式

在 master-worker 模式下:有一个 master 进程和至少一个的 worker 进程

单进程模式:顾名思义只有一个进程

这两种模式有各自的特点和适用场景

master-worker:该模式下,nginx 启动成功后,会有一个 master 进程和至少一个的 worker 进程。
 
master '进程负责处理系统信号(control)',加载配置,管理 worker 进程(启动、杀死、监控、发送消息/信号等)。
 
worker '进程负责处理具体的业务逻辑',也就是说,对外部来说,真正提供服务的是 worker 进程

这种模式有以下优点

1. 稳定性高,只要还有 worker 进程存活,就能够提供服务,并且一个 worker 进程挂掉 master 进程会立即启动一个新的 worker 进程,保证 worker 进程数量不变,降低服务中断的概率。
2. 配合 linux 的 cpu 亲和性配置,可以充分利用'多核 cpu 的优势',提升性能-->重点!
3. 处理信号/配置重新加载/升级时可以做到尽可能少或者不中断服务(热重启-->不中断服务)-->重点!

单进程模式(了解)–>调试

单进程模式下,nginx启动后'只有一个进程','nginx 的所有工作都由这个进程负责'.由于只有一个进程,
因此可以很方便地利用 gdb 等工具进行调试。该模式'不支持 nginx 的平滑升级功能',任何的信号处理
都可能造成服务中断,并且由于是单进程,进程挂掉后,在没有外部监控的情况下,无法重启服务。
因此,该模式一般只在开发阶段和调试时使用,生产环境下不会使用'(了解)'.

3 主配置文件结构(简介)

user www www;
# (1)程序运行用户和组-->nginx
worker_processes auto;
# (2)启动进程,指定 nginx 启动的工作进程数量;建议按照 cpu 数目来指定,一般等于cpu核心数目
error_log /home/wwwlogs/nginx_error.log crit;
# (3)nginx全局错误日志
pid  /usr/local/nginx/logs/nginx.pid;
# (4)主进程 PID 保存文件
worker_rlimit_nofile 51200;
# (5)文件描述符数量
 
# (6)事件区块开始-->events
events {
        use epoll;
        # (1)使用 epoll 模型,对于 2.6 以上的内核,建议使用 epoll 模型以提高性能
        worker_connections 51200;
        # (2)一个工作进程能处理的最大连接数量
       }
 
# (7)http区块的开始
http   {
        # 解决中文-->后续补充
    # server里面是一些网站优化参数
    server {
        # (1)具体的某一网站的配置信息
        listen 80;
        # (2)监听端口-->-->可以写成IP:Port的形式
        root html;
        # (3)网页根目录(/usr/local/nginx/html)
        server_name www.wzj.com;
        # (4)提供服务的域名主机名!
        index index.html;
        # (5)默认加载页面-->多个优先级!
        access_log logs/access.log; 
        # (6)访问日志保存位置
          location (.*)\.php$ {
            # 用正则匹配具体的访问对象-->php结尾的
            }
          location {
                # 跳转等规则-->rewrite
            }
    }  # server的匹配结束
 
      server {
        # 虚拟主机;
    }
}       # http结束区块

注意事项:

1)注意配置文件中的结尾有';'作为结束~!(切记!)
 
2)每次实验修改完配置文件后需要'重启 nginx 才会生效'

nginx面试题

nginx专栏