Beginner’s Guide of Nginx

旧博客迁移文章,内容可能已失去价值,仅为留念,做了简单重新排版,勉强可看。

整理自:https://nginx.org/en/docs/beginners_guide.html

0x1 概念

  1. nginx由被指定指令控制的模块组成。
  2. 指令包括简单指令块指令
  3. 简单指令包括指令名称参数,参数和名称用空格分隔,一条指令以分号结束
  4. 块指令是以花括号包含简单指令的指令,若一个块指令包含其他的块指令称之为 context,如:events, http, serverlocation
  5. #用于单行注释

0x2 处理静态内容

对于一个提供静态内容服务的 web 服务器,nginx 配置文件的基本结构如下:

http{

    server {
        listen 80
        location / {
            root /data/www;
        }
    
        location /images/ {
            root /data;
        }
    }
}
  1. listen 不写的情况下,默认监听 80 端口
  2. 若具有多个 location 块,nginx 选择前缀最长的那一个。即对于 URL 以 /images/ 开头的请求,nginx 会映射到 /data/images/,而非 /data/www/images

0x3 简单的代理服务器

代理服务器要用到的最基础的指令是proxy_pass,基本结构如下:

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

    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }
}
  1. 基本功能:除了对扩展名为 .gif, .jpg.png 的文件的请求,其他请求均被指向代理服务器http://localhost:8080
  2. 这里没有 listen 指令,说明默认监听80端口
  3. 第二个 location 块使用了简单的正则匹配,nginx 中使用正则表达式需以 ~ 开头

0x4 配置FastCGI代理

配置 nginx 与 FastCGi 服务器协同工作,需要两个基本指令 fastcgi_passfastcgi_param

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;
    }
}
  1. 这是一个最简单的基于 PHP 的配置,若是有 POST 请求还需要配置其他 fastcgi_param 参数
  2. 在 PHP 中,SCRIPT_FILENAME 用于获取脚本名称,QUERY_STRING 用于传递请求的参数。

本文链接:参与评论 »

--EOF--

提醒:本文最后更新于 2920 天前,文中所描述的信息可能已发生改变,请谨慎使用。

Comments