nginx-1 初学者入门

nginx包含一个master进程和多个worker进程。master进程负责读取、执行配置并且管理维护worker进程。worker进程负责接收处理请求。nginx使用事件驱动模型(event-based)和依赖操作系统的(OS-dependent)机制高效地将请求分发给worker进程。工作进程的数量在配置文件中定义,可以针对给定的配置进行固定,也可以根据可用CPU内核的数量自动调整。

开启、停止和重新加载配置

nginx -s signal

signal 可以有如下选择

  • stop 快速停止,即直接马上停止worker进程,不管其工作完成与否
  • quit 优雅的停止,等待所有worker进程完成手头上工作再停止
  • reload 重新加载配置文件
  • reopen 重新加载日志文件

一旦master进程接收到signal信号,它会检验新配置文件的语法并尝试应用其中的配置。如果应用成功,master进程开启新的工作进程,并发送信息通知旧的worker进程可以退休了;否则master进程回滚配置的改变,按原来的配置继续工作。
worker进程退休过程?

  1. 停止接收新请求
  2. 服务好当前请求
  3. 退休

除此之外,linux环境可以使用kill命令将信号发送给nginx进程

kill -s QUIT pid

nginx的pid保存于nginx.pid;默认情况下,nginx.pid 位于 /usr/local/nginx/logs/var/run 目录下。
ps命令可以用于查看所有运行中的nginx进程

ps -ax | grep nginx

对于发送信号到nginx,如果你想了解更多,可以查看 控制nginx

配置文件的结构

nginx由多个模块组成,这些模块被在配置文件里所指定的指令控制。指令分为 简单指令块指令。简单指令包含以空格分离的名称和参数,以分号(;)作为结束标志。虽说结构一样,但块指令是以用花括号({})包围的一组指令结束。如果块指令可以包含其他指令,那么该块指令就称为上下文(context)(比如:events,http,server,location)

提供静态内容

#默认监听端口80
#root:根目录指令,后面跟目录路径
server {
    location / {
        root /data/www;
    }

    location /images/ {
        root /data;
    }
}

如果nginx未启动,则使用nginx -s start;否则使用nginx -s reload。
如果nginx没按预期工作, 可以从 /usr/local/nginx/logs/var/log/nginx 下的 access.logerror.log查看原因。

配置一个简单的代理服务器

# 再开启一个nginx实例,监听8080端口
server {
    listen 8080;
    #全局root指令,适用于所有未指定root指令的location块指令
    root /data/up1;

    location / {
    }
}

#修改前面的配置并reload
#通过访问localhost:80 nginx会代理访问 localhost:8080
server {
    location / {
        proxy_pass http://localhost:8080;
    }

    #匹配以.gif | .jpg | .png 结尾的uri
    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }
}

设置FastCGI代理

什么是FastCGI服务器?
使用任何框架和编程语言(比如PHP)构建的各类应用。

要与FastCGI服务器协作,nginx要使用的指令是 fastcgi_pass 而不是 prox_pass 。并且可以通过fastcgi_pass指令设置一些参数。

# 顾名思义
# document_root 文档根路径,等价于 root指令的参数
# fastcgi_script_name 脚本的名称,比如index.php
# SCRIPT_FILENAME 脚本文件路径全称
# query_string 传递请求参数
server {
    location / {
        fastcgi_pass  localhost:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param QUERY_STRING    $query_string;
    }

    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }
}

你可能感兴趣的:(nginx-1 初学者入门)