阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx请求处理

378次阅读
没有评论

共计 3696 个字符,预计需要花费 10 分钟才能阅读完成。

目录

  1. 基于名称的虚拟主机
  2. 如何避免处理没有服务器名的请求
  3. 混合基于名称和基于 IP 的虚拟服务器
  4. 简单的 PHP 站点配置

1. 基于名称的虚拟主机

Nginx 首先会决定哪个主机处理请求。我们先开始一个简单的配置三个虚拟主机监听在 80 端口。

server {

    listen      80;

    server_name example.org www.example.org;

    …

}

 

server {

    listen      80;

    server_name example.net www.example.net;

    …

}

 

server {

    listen      80;

    server_name example.com www.example.com;

    …

}

在这个配置中,nginx 仅仅检查请求头部的”Host”信息来判断请求应该送到哪个服务器,如果这个值没有匹配任何服务器名,或者请求没有包含头部 Host 信息,nginx 会使用默认服务器来处理这个请求。上面的配置,默认服务器是第一个 (nginx 的标准行为),你也可以精确的指定那个服务器用做默认服务器,只需要你在 listen 指令后面添加 default_server 参数。
server {
    listen      80 default_server;
    server_name example.net www.example.net;
    …
}
注意:default_server 只是监听端口的属性,而不是服务器名称。

2.      如何避免处理没有服务器名的请求
如果请求没有”Host”信息,那么可以不处理这个请求,服务器用于终止 (drop) 掉这个请求可以这么做
server {
    listen      80;
    server_name “”;
    return      444;
}
这里服务器名称被设置为空字符串,将会匹配任何没有”Host”头部的请求,然后返回给客户端 nginx 的非标准代码 404。

3.      混合基于名称和基于 IP 的虚拟服务器
让我们看看下面一个更加复杂的配置,虚拟服务器监听的不同的地址。
server {
    listen      192.168.1.1:80;
    server_name example.org www.example.org;
    …
}
server {
    listen      192.168.1.1:80;
    server_name example.net www.example.net;
    …
}
server {
    listen      192.168.1.2:80;
    server_name example.com www.example.com;
    …
}
在这个配置中,nginx 首先会测试请求的 IP 地址和端口。然后测试头部的”Host”信息,如果服务器名称 (server name) 没找到,请求
会被默认服务器处理。例如一个请求 www.example.com 在 192.168.1.1:80 被接收将会通过 192.168.1.1:80 端口的默认服务器处理,因
为在这个端口上没有定义 www.example.com。
上面已经说过了,默认服务器只是监听端口的一个属性,不同的服务器可以被定义对于不同的端口来说。
server {
    listen      192.168.1.1:80;
    server_name example.org www.example.org;
    …
}
server {
    listen      192.168.1.1:80 default_server;
    server_name example.net www.example.net;
    …
}
server {
    listen      192.168.1.2:80 default_server;
    server_name example.com www.example.com;
    …
}

4.      简单的 PHP 站点配置
现在,让我们看看 nginx 如何选择一个 location 处理典型的简单的 PHP 站点。
server {
    listen      80;
    server_name example.org www.example.org;
    root        /data/www;
    location / {
        index  index.html index.php;
    }
    location ~* \.(gif|jpg|png)$ {
        expires 30d;
    }
    location ~ \.php$ {
        fastcgi_pass  localhost:9000;
        fastcgi_param SCRIPT_FILENAME
                      $document_root$fastcgi_script_name;
        include      fastcgi_params;
    }
}

nginx 首先会不按照列出来的顺序 寻找最详细指定的前缀。上面的配置中,唯一的前缀是”/”,而且它匹配任何的请求,所有它会被用作最后的处理。然后 nginx 根据配置文件中的顺序检查正则表达式的 location。第一个匹配到之后就会停止向下搜寻然后使用这个 location。如果没有正则表达式匹配到,nginx 会使用最通用的最早的 location。
注意: 所有类型的 location 仅仅测试部分 URI,不会测试 URI 的参数。因为参数在查询字符串中可以有很多种方式,例如

/index.php?user=john&page=1

/index.php?page=1&user=john

除此之外,任何人可以请求任何事情就像这样

/index.php?page=1&something+else&user=john

现在让我们看看上面的配置如何处理请求的

  • 首先”/logo.gif”请求会被前缀 location“/”匹配,然后通过正则表达式”\.(gif|jpg|png)”,因此,它会被后面的 location 处理。使用了指令“root /data/www”, 这个请求会被影射到 /data/www/logo.gif 文件,然后文件被发送到客户端。
  • 请求”/index.php”也会被”/”匹配到,然后被正则表达式”\.(php)$”匹配到。因此它会被后面的匹配处理,然后请求传递监听在 9000 端口的 FastCGI 服务器。fastcgi_param 指令设置 FastCGI 参数 SCRIPT_FILENAME 为”/data/www/index.php”,然后 FastCGI 服务器执行这个文件,变量 $document_root 等价于 root 指令的值,变量 $fastcgi_script_name 等价于请求的 URI,”/index.php”
  • 请求”/about.html”仅仅被前缀”/”匹配,因此仅仅在这个 location 被处理。使用指令”root /data/www”,这个请求映射到 /data/www/about.html 文件,然后文件发送到客户端。
  • 处理请求”/”更加复杂。它仅仅匹配”/”,因此它被这个位置处理。然后 index 指令测试 index 文件是否存在,如果文件 /data/www/index.html 不存在,文件 /data/www/index.php 存在的话,然后指令做一个内部重定向到 /index.php,然后 nginx 再次寻找 location,就好像客户端已经发出请求一样。就像上面看到的,重定向请求最终会被 FastCGI 服务器处理。

 

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

使用 Nginx 搭建 WEB 服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-12/125790.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3696字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7999126
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用 AI 做了一个 1978 年至 2019 年中国大陆企业注册的查询网站 最近星哥在 GitHub 上偶然...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新 SSL 证书系统、申请 godaddy 的 APIKEY 公司之前花钱购买的 ssl 证书快...
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...