Nginx R31 doc-08-NGINX 和 NGINX Plus 作为 Web 服务器

配置 NGINX 和 NGINX Plus 作为 Web 服务器

设置虚拟服务器

在 NGINX Plus 配置文件中,必须包含至少一个 server 指令来定义一个虚拟服务器。

当 NGINX Plus 处理请求时,首先选择将服务于该请求的虚拟服务器。

http {
    server {
        # 服务器配置
    }
}

可以在 http 上下文中添加多个 server 指令来定义多个虚拟服务器。

服务器配置块通常包括一个 listen 指令,用于指定服务器监听请求的 IP 地址和端口(或 Unix 域套接字和路径)。接受 IPv4 和 IPv6 地址;将 IPv6 地址括在方括号中。

下面的示例显示了一个服务器配置,该服务器监听 IP 地址 127.0.0.1 和端口 8080:

server {
    listen 127.0.0.1:8080;
    # 其他服务器配置
}

如果省略了端口,则使用标准端口。同样,如果省略了地址,则服务器将监听所有地址。如果完全不包含 listen 指令,则使用“标准”端口为 80/tcp,而“默认”端口为 8000/tcp,这取决于超级用户权限。

如果有多个服务器匹配请求的 IP 地址和端口,NGINX Plus 将请求的 Host 标头字段与 server 块中的 server_name 指令进行比较。server_name 的参数可以是完整(精确)名称、通配符或正则表达式。通配符是一个以星号 (*) 开头、结尾或两者兼有的字符字符串;星号匹配任何字符序列。NGINX Plus 使用 Perl 语法进行正则表达式;在配置文件中出现的顺序决定了它们的优先级。

server {
    listen      80;
    server_name example.org www.example.org;
    #...
}

如果 Host 标头字段匹配了多个名称,则 NGINX Plus 会按以下顺序搜索名称,并使用找到的第一个匹配项:

  • 精确名称
  • 最长的以星号开头的通配符,例如 *.example.org
  • 最长的以星号结尾的通配符,例如 mail.*
  • 第一个匹配的正则表达式(按照配置文件中出现的顺序)

如果 Host 标头字段与任何服务器名称都不匹配,则 NGINX Plus 会将请求路由到该请求到达的端口的默认服务器。默认服务器是 nginx.conf 文件中列出的第一个服务器,除非您使用 listen 指令的 default_server 参数来显式地指定服务器为默认服务器。

server {
    listen 80 default_server;
    #...
}

配置位置

NGINX Plus 可以根据请求 URI 将流量发送到不同的代理或为不同的文件提供服务。这些块使用位于 server 指令中的 location 指令定义。

例如,您可以定义三个 location 块来指示虚拟服务器将一些请求发送到一个代理服务器,将其他请求发送到不同的代理服务器,并通过从本地文件系统提供文件来为其余的请求提供服务。

NGINX Plus 将请求 URI 与所有 location 指令的参数进行比较,并应用匹配位置中定义的指令。在每个 location 块内部,通常可以(有少数例外)放置更多的 location 指令,以进一步细化特定组的请求的处理方式。

在 location 指令中,有两种类型的参数:前缀字符串(路径名)和正则表达式。对于请求 URI 要与前缀字符串匹配,必须以前缀字符串开头。

下面的示例 location 使用路径名参数,匹配以 /some/path/ 开头的请求 URI,例如 /some/path/document.html。(它不会匹配 /my-site/some/path,因为 /some/path 不是该 URI 的开头。)

location /some/path/ {
    #...
}

正则表达式前面带有波浪号()用于区分大小写匹配,或者带有波浪号-星号(*)用于不区分大小写匹配。下面的示例匹配任何位置包含字符串 .html 或 .htm 的 URI。

location ~ \.html? {
    #...
}

NGINX 位置优先级

为了找到最匹配 URI 的位置,NGINX Plus 首先将 URI 与具有前缀字符串的位置进行比较。然后搜索具有正则表达式的位置。

对于正则表达式,会给予更高的优先级,除非使用 ^~ 修饰符。在前缀字符串中,NGINX Plus 选择最具体的一个(即最长且最完整的字符串)。选择用于处理请求的位置的确切逻辑如下所示:

  • 将 URI 与所有前缀字符串进行比较。
  • =(等号)修饰符定义 URI 和前缀字符串的精确匹配。如果找到了精确匹配,则搜索停止。
  • 如果 ^~(插入波浪号)修饰符在最长匹配的前缀字符串之前,则不检查正则表达式。
  • 存储最长匹配的前缀字符串。
  • 将 URI 与正则表达式进行比较。
  • 当找到第一个匹配的正则表达式时停止处理,并使用相应的位置。
  • 如果没有正则表达式匹配,则使用对应于存储的前缀字符串的位置。

对于 = 修饰符的典型用例是请求 /(斜杠)。如果请求 / 频繁,则将 = / 指定为 location 指令

的参数可以加快处理速度,因为在第一次比较后搜索匹配项就会停止。

location = / {
    #...
}

位置上下文可以包含指令,定义如何解析请求 - 服务静态文件或将请求传递到代理服务器。

在下面的示例中,匹配第一个位置上下文的请求将从 /data 目录提供文件,而匹配第二个位置上下文的请求将被传递到托管 <www.example.com> 域的代理服务器。

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

    location / {
        proxy_pass http://www.example.com;
    }
}

root 指令指定文件系统路径,用于搜索要提供的静态文件。与位置相关联的请求 URI 附加到路径以获取要提供的静态文件的完整名称。在上面的示例中,对于 /images/example.png 的请求,NGINX Plus 会提供文件 /data/images/example.png。

proxy_pass 指令将请求传递到使用配置的 URL 访问的代理服务器。然后将来自代理服务器的响应传递回客户端。在上面的示例中,所有 URI 不以 /images/ 开头的请求都将传递到代理服务器。

使用变量

您可以在配置文件中使用变量,使 NGINX Plus 根据定义的情况处理请求。变量是在运行时计算的命名值,用作指令的参数。变量以其名称的开头为 $(美元)符号表示。变量根据 NGINX 的状态定义信息,例如当前正在处理的请求的属性。

有许多预定义的变量,例如核心 HTTP 变量,并且您可以使用 set、map 和 geo 指令定义自定义变量。大多数变量在运行时计算,并包含与特定请求相关的信息。例如,remote_addr 包含客户端 IP 地址,uri 包含当前 URI 值。

nginx 系列

Nginx-01-聊一聊 nginx

Nginx-01-Nginx 是什么

Nginx-02-为什么使用 Nginx

Nginx-02-Nginx Ubuntu 安装 + windows10 + WSL ubuntu 安装 nginx 实战笔记

Nginx-02-基本使用

Nginx-03-Nginx 项目架构

Nginx-04-Docker Nginx

Nginx-05-nginx 反向代理是什么?windows 下如何配置使用 nginx

Nginx-06-nginx 汇总入门介绍

Nginx R31 doc 官方文档-01-nginx 如何安装

Nginx R31 doc-02-nginx 基本功能

Nginx R31 doc-03-HTTP Load Balancing HTTP 负载均衡

Nginx R31 doc-04-HTTP Health Checks

Nginx R31 doc-05-Dynamic Configuration of Upstreams with the NGINX Plus API 使用 NGINX Plus API 动态配置上游服务器

Nginx R31 doc-06-Accepting the PROXY Protocol

Nginx R31 doc-07-内容缓存

Nginx R31 doc-08-Configuring NGINX and NGINX Plus as a Web Server 配置 NGINX 和 NGINX Plus 作为 Web 服务器

Nginx R31 doc-09-Serving Static Content 静态内容

Nginx R31 doc-10-NGINX Reverse Proxy 反向代理

Nginx R31 doc-11-Compression and Decompression 压缩与解压缩

Nginx R31 doc-12-NGINX SSL Termination 安全加密

Nginx R31 doc-13-Limiting Access to Proxied HTTP Resources 访问限流

Nginx R31 doc-14-Dynamic Denylisting of IP Addresses 动态拒绝IP地址

Nginx R31 doc-15-Live Activity Monitoring 实时活动监控

Nginx R31 doc-16-logging 配置日志

Nginx R31 doc-17-debugging 调试

Nginx R31 doc-18-High Availability Support for NGINX Plus in On-Premises Deployments

Nginx 实战-01-nginx ubuntu 安装笔记

Nginx 实战-01-nginx windows 安装笔记

Nginx 实战-02-nginx proxy_pass 服务代理访问 使用笔记 ubuntu nodejs

Nginx 实战-03-nginx 负载均衡

Nginx 实战-04-nginx 不同的地址访问不同的服务

Nginx 实战-05-nginx 反向代理实现域名到指定的 ip

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,002评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,777评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,341评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,085评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,110评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,868评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,528评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,422评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,938评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,067评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,199评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,877评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,540评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,079评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,192评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,514评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,190评论 2 357

推荐阅读更多精彩内容