Nginx - server、listen、server_name和多服务请求处理(三)

server 上下文

server {
}

server指令用于配置一个虚拟服务。listen指令描述了本服务可接受链接的所有地址和端口,server_name指令列举了所有服务的名字,例如

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

listen 指令

Syntax:	
listen address[:port] [default_server] [ssl] [http2 | quic] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];listen port [default_server] [ssl] [http2 | quic] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];listen unix:path [default_server] [ssl] [http2 | quic] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];Default:	listen *:80 | *:8000;
Context:	server

例如一些常见的用法,listen指令指定了该服务监听的地址和端口

listen 127.0.0.1:8000;
listen 127.0.0.1;	# 不加端口,默认80
listen 8000;
listen *:8000;
listen localhost:8000;#IPv6 addresses
listen [::]:8000;
listen [::1];

server_name 指令

Syntax:	server_name name ...;
Default:	
server_name "";
Context:	server

设置虚拟服务的名字,可以使用通配符和正则表达式

server_name example.com www.example.com;server_name example.com *.example.com www.example.*;server_name www.example.com ~^www\d+\.example\.com$;

多服务请求处理

当有多个服务时,nginx如何决定使用哪个server进行处理呢?例如在*:80端口监听了多个服务:

server {listen 80 default_server;server_name test.com;default_type text/html;location / {return 200 'Default Main Server\n';}
}server {listen 80;server_name zh.test.com;default_type text/html;location / {return 200 'Chinese Server\n';}
}server {listen 80;server_name en.test.com;default_type text/html;location / {return 200 'English Server\n';}
}

nginx 将通过测试请求头中的Host字段来决定使用哪个服务。如果没有server name 被匹配到,或者请求中不包含请求头,则使用该端口的默认服务。listen指令中的default_server可以用来显式配置默认服务,如果没有该字段,那么默认使用该端口的第一个服务。

使用curl请求测试,分别得到

$ curl -H ‘Host: test.com' -v localhost 
Default Main Server
$ curl -H ‘Host: zh.test.com' -v localhost 
Chinese Server
$ curl -H ‘Host: en.test.com' -v localhost 
English Server

name-based 和 IP-based混合虚拟服务

服务器可以有多个公网IP以及解析多个域名,如下配置:

server {listen 127.0.0.2:80;server_name test.com;default_type text/html;location / {return 200 'Default Main Server\n';}
}server {listen 127.0.0.1:80;server_name zh.test.com;default_type text/html;location / {return 200 'Chinese Server\n';}
}server {listen 127.0.0.1:80;server_name en.test.com;default_type text/html;location / {return 200 'English Server\n';}
}

访问测试:

$ curl -H 'Host: test.com' -v 127.0.0.1
Chinese Server
$ curl -H 'Host: test.com' -v 127.0.0.2
Default Main Server
$ curl -H 'Host: zh.test.com' -v 127.0.0.1
Chinese Server
$ curl -H 'Host: zh.test.com' -v 127.0.0.2
Default Main Server

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/9965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust - 基础语法

文章目录 注释基本输出输出 {} 变量重影(Shadowing) 数据类型整数型(Integer)浮点数型(Floating-Point) f32、f64数学计算布尔型 bool字符型 char元组 ()数组 [].. 表示范围切片 slice结构体枚举match 处理…

AI大模型探索之路-训练篇20:大语言模型预训练-常见微调技术对比

系列篇章💥 AI大模型探索之路-训练篇1:大语言模型微调基础认知 AI大模型探索之路-训练篇2:大语言模型预训练基础认知 AI大模型探索之路-训练篇3:大语言模型全景解读 AI大模型探索之路-训练篇4:大语言模型训练数据集概…

nginx 详解

Nginx(发音为“Engine-X”)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3代理服务器。Nginx以其高稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。它特别适用于处理高并发请求,这部分归功于其事件驱动和异步架构。…

RF Plasma gernerator-系列(RF-5KW Adtec)说明书TX06-9001-00

RF Plasma gernerator-系列(RF-5KW Adtec)说明书TX06-9001-00

深度学习课程论文精读——ESRGAN

目录 1.研究概述 2.论文创新 2.1 改进生成器的网络框架 2.2 改进判别器 2.3 改进感知损失 2.4 网络插值 3.实验 3.1 评价指标 3.2 训练细节 3.3 对比实验 3.4 消融实验 3.5 网络插值 4.总结 5.阅读参考 文章标题:《ESRGAN: Enhanced Super-Resolution…

Hive优化(1)——分桶采样

分桶(Bucketing) 分桶是将数据按照某个字段的哈希值进行分组存储的一种技术。它的原理是将数据按照指定字段的哈希值分成固定数量的桶,将每条记录分配到对应的桶中。分桶可以帮助优化特定类型的查询,例如连接查询和聚合操作&…

2024OD机试卷-攀登者1 (java\python\c++)

题目:攀登者1 题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图,地图中有两个山脉位置分别…

TS-声明文件

目录 1,什么是声明文件2,作用3,位置1,tsconfig.json 配置的包含目录中2,node_modules/types 目录中3,typeRoots 配置项中的目录4,与 js 文件同名同目录的文件 4,编写1,ts…

java中List的toArray()方法

toArray()介绍 toArray()方法是List接口中提供的方法,用来实现List对象转换为数组对象的功能。 toArray()方法有两种形式,无参方法和带泛型的方法,接下来给出例子。 1.toArray() // toArray()源码public Object[] toArray() {return Arrays.…

携手鲲鹏昇腾 HashData展现云原生数仓创新力量

​5月9日-11日,鲲鹏昇腾开发者大会2024在北京中关村国际创新中心举行,众多行业领袖、专家学者及优秀开发们齐聚一堂,分享产业趋势、技术创新和应用实践。 酷克数据作为华为鲲鹏生态重要合作伙伴,受邀出席本次大会,展示…

C++ Primer Plus 知识的讲解

程序模板 #pragma region xxx.cpp //xxx.cpp -- xxx #if 0 #include <iostream> int main() {using namespace std;return 0; } #endif #pragma endregionC Primer Plus 知识的讲解 第一章&#xff1a;预备知识 本章内容包括&#xff1a; .C语言和C的发展历史和基本原…

大语言模型LLM原理篇

大模型席卷全球&#xff0c;彷佛得模型者得天下。对于IT行业来说&#xff0c;以后可能没有各种软件了&#xff0c;只有各种各样的智体&#xff08;Agent&#xff09;调用各种各样的API。在这种大势下&#xff0c;笔者也阅读了很多大模型相关的资料&#xff0c;和很多新手一样&a…

sass 详解

Sass&#xff08;Syntactically Awesome Style Sheets 的缩写&#xff09;是一种 CSS 预处理器&#xff0c;用于使CSS的使用更加高效和动态。它允许使用变量、嵌套规则、混合和函数等功能&#xff0c;以编写更可维护、更强大的代码。Sass 主要有两种语法格式&#xff1a;SCSS&a…

【Redis】用户登录校验

对于用 redis 对用户进行登录校验&#xff0c;大致可分为以下六步&#xff1a; 首先通过查询数据库来查找具有提供的用户名、密码和delFlag值为0的用户。如果未找到用户&#xff0c;则抛出一个带有消息"用户不存在"的ClientException&#xff08;用户不存在&#xf…

【产品应用】一体化伺服电机在拉力系统设备中的应用

随着工业自动化的快速发展&#xff0c;高精度、高效率的传动与控制设备需求日益增长。一体化伺服电机作为一种集驱动、控制、反馈于一体的智能型电机&#xff0c;因其卓越的性能&#xff0c;在各类工业设备中得到了广泛应用。特别是在拉力实验设备中&#xff0c;一体化伺服电机…

WebRTC 的核心:RTCPeerConnection

WebRTC 的核心&#xff1a;RTCPeerConnection WebRTC 的核心&#xff1a;RTCPeerConnection创建 RTCPeerConnection 对象RTCPeerConnection 与本地音视频数据绑定媒体协商ICE什么是 Candidate&#xff1f;收集 Candidate交换 Candidate尝试连接 SDP 与 Candidate 消息的互换远端…

线程同步--互斥锁,读写锁

线程同步 基本概念 线程的能力在于能够方便地通过全局变量或共享内存来交换信息&#xff0c;但这也带来了并发控制的复杂性&#xff0c;主要表现在如何安全地管理多个线程对共享资源的访问。这里涉及到几个关键的概念和技术&#xff1a; 临界区&#xff08;Critical Section…

jenkins部署想定报错

报错&#xff1a; 解决办法&#xff1a; 登录被编译的设备&#xff0c;清楚旧代码&#xff0c;在重新执行

Dependencies:查找项目中dll关联文件是否缺失。

前言 Dependencies工具作为一款优秀的DLL解析工具&#xff0c;能让你很直观地看到DLL的相关信息&#xff0c;如具备哪些功能函数、参数&#xff0c;又比如该DLL基于哪些DLL运行。判断该dll基于哪些dll运行&#xff0c;如果基于的dll丢失&#xff0c;那么就会提示。就能判断缺少…

【Ubuntu永久授权串口设备读取权限‘/dev/ttyUSB0‘】

Ubuntu永久授权串口设备读取权限 1 问题描述2 解决方案2.1 查看ttyUSB0权限&#xff0c;拥有者是root&#xff0c;所属用户组为dialout2.2 查看dialout用户组成员&#xff0c;如图所示&#xff0c;普通用户y不在dialout组中2.3 将普通用户y加入dialout组中2.4 再次查看dialout用…