qianlei90 / Blog

那些该死的文字呦
https://qianlei.notion.site
103 stars 20 forks source link

《Nignx官方文档》笔记 #9

Open qianlei90 opened 7 years ago

qianlei90 commented 7 years ago

《Nignx官方文档》笔记

Tags: 印象笔记

[toc]


1. 介绍

nginx有一个master进程和若干worker进程。worker进程的数量在配置文件中定义,可固定值也可根据cpu核心数来自动调整。

2. 信号

nginx -s 信号,其中信号可选值与意义如下:

信号 意义
stop 快速退出
quit 安全退出
reload 重载配置文件
reopen 重新打开日志文件

  1. 官方文档中说quit信号会处理完当前请求后在安全退出,stop信号并未提及,可能是直接关闭。
  2. 要以启动nginx的用户执行quit信号。

reload信号会先检查配置文件合法性,如果配置无误会开启新的worker进程接收新到的请求,并发信号给老的worker进程,老的worker进程处理完当前的请求后会自动安全退出。 也可以使用kill命令,如kill -s QUIT 1628(1628为master进程号),另一个常用的kill -HUP 1628效果同reload信号。

3. 配置文件的结构

配置文件由指令(simple directive)和指令块(block directive)组成,指令由;结束,指令块由{}组成,指令块可嵌套。不在指令块中的指令为主上下文(main context)。 以#开头的行是注释。 如eventhttp指令块在主上下面中,server指令块在http指令块中,location指令块在server指令块中。

4. 为静态页面提供服务

http {
    server {
        location / {
            root /data/wwww;
        }

        location /images/ {
            root /data;
        }
    }
}

/images/开头的请求会加上/data形成本地的路径(/data/images/)来获取资源,其他请求会直接到/data/www/目录下获取。

5. 简单的代理服务器

server {
    listen 8080;
    root /data/up1;

    location / {
    }
}

监听8080端口,过来的所有请求去/data/up1获取资源。

server {
    location / {
        proxy_pass http://localhost:8080;
    }

    location /images/ {
        root /data;
    }
}

所有以/images/开头的请求去/data/iamges下获取资源,其他请求转发到本地的8080端口。

server {
    location / {
        proxy_pass http://localhost:8080/;
    }

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

.gif.jpg.png结尾的url去/data/images下获取资源,其他请求转发到本地的8080端口。

6. FastCGI代理

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;
    }
}

使用fastcgi_pass指令代替proxy_pass来表明使用的是FastCGI,fastcgi_param指令设置传递给FastCGI服务器的参数

- 完 -