Nginx 的 server 配置块有什么作用?

推荐答案

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 块:

  1. 精确匹配:如果 server_name 与请求的主机名完全匹配,则选择该 server 块。
  2. 通配符匹配:如果 server_name 包含通配符(如 *.example.com),则选择匹配的 server 块。
  3. 默认服务器:如果没有匹配的 server 块,则选择 listen 指令中标记为 default_serverserver 块。

4. 示例

以下是一个支持多个虚拟主机的配置示例:

-- -------------------- ---- -------
------ -
    ------ ---
    ----------- ------------

    -------- - -
        ---- -----------------
        ----- -----------
    -
-

------ -
    ------ ---
    ----------- ------------

    -------- - -
        ---- -----------------
        ----- -----------
    -
-

------ -
    ------ -- ---------------
    ----------- --

    -------- - -
        ------ ----
    -
-
  • 第一个 server 块处理 example.com 的请求。
  • 第二个 server 块处理 another.com 的请求。
  • 第三个 server 块作为默认服务器,处理所有未匹配的请求,并返回 404 状态码。
纠错
反馈