推荐答案
Nginx 的 server
配置块用于定义虚拟服务器的配置。每个 server
块可以配置一个或多个域名(或 IP 地址)的请求处理规则。通过 server
块,Nginx 可以根据请求的主机名或 IP 地址将流量路由到不同的后端服务或处理逻辑。
本题详细解读
1. server
块的基本结构
一个典型的 server
块配置如下:
-- -------------------- ---- ------- ------ - ------ --- ----------- ----------- ---------------- -------- - - ---- -------------- ----- ----------- - -
listen
:指定服务器监听的端口号,可以是 80(HTTP)或 443(HTTPS)。server_name
:指定服务器响应的域名或 IP 地址。可以配置多个域名,用空格分隔。location
:定义请求的 URI 路径与后端处理逻辑的映射关系。
2. server
块的作用
- 虚拟主机支持:通过
server_name
配置,Nginx 可以支持多个虚拟主机,即在同一台服务器上运行多个网站,每个网站有独立的配置。 - 请求路由:根据请求的主机名或 IP 地址,Nginx 可以将请求路由到不同的
server
块进行处理。 - 负载均衡:在
server
块中,可以配置反向代理,将请求转发到多个后端服务器,实现负载均衡。 - SSL/TLS 配置:可以在
server
块中配置 SSL/TLS 证书,启用 HTTPS 加密通信。
3. server
块的优先级
当多个 server
块匹配同一个请求时,Nginx 会根据以下规则选择最合适的 server
块:
- 精确匹配:如果
server_name
与请求的主机名完全匹配,则选择该server
块。 - 通配符匹配:如果
server_name
包含通配符(如*.example.com
),则选择匹配的server
块。 - 默认服务器:如果没有匹配的
server
块,则选择listen
指令中标记为default_server
的server
块。
4. 示例
以下是一个支持多个虚拟主机的配置示例:
-- -------------------- ---- ------- ------ - ------ --- ----------- ------------ -------- - - ---- ----------------- ----- ----------- - - ------ - ------ --- ----------- ------------ -------- - - ---- ----------------- ----- ----------- - - ------ - ------ -- --------------- ----------- -- -------- - - ------ ---- - -
- 第一个
server
块处理example.com
的请求。 - 第二个
server
块处理another.com
的请求。 - 第三个
server
块作为默认服务器,处理所有未匹配的请求,并返回 404 状态码。