• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 绑定指定地址与端口

    概述

    相关模块相关指令
    核心
    mpmcommon
    <VirtualHost>

    当 httpd 启动时,它会绑定到本地计算机上的某个 port 和地址,并等待传入的请求。默认情况下,它会侦听计算机上的所有地址。但是,可能需要告知可以侦听特定端口,或仅侦听选定地址,或两者的组合。这通常与虚拟 Host feature 结合使用,后者确定httpd如何响应不同的 IP 地址,主机名和端口。

    听指令告诉服务器仅接受指定的 port(s 或 address-and-port 组合的传入请求。如果在听指令中仅指定了 port 编号,则服务器将侦听所有接口上的给定 port。如果给出 IP 地址和 port,服务器将侦听给定的 port 和接口。多个听指令可用于指定要侦听的多个地址和端口。服务器将响应来自任何列出的地址和端口的请求。

    例如,要使服务器在所有接口上同时接受 port 80 和 port 8000 上的连接,请使用:

    Listen 80
    Listen 8000
    

    要使服务器在 port 80 上接受一个接口的连接,并在另一个接口上接受 port 8000,请使用

    Listen 192.0.2.1:80
    Listen 192.0.2.5:8000
    

    IPv6 地址必须用方括号括起来,如下例所示:

    Listen [2001:db8::a00:20ff:fea7:ccea]:80
    

    重叠听指令将导致致命错误,这将阻止服务器启动。

    (48)Address already in use: make_sock: could not bind to address[::]:80

    有关详细的故障排除提示,请参阅维基的讨论

    在重新启动时更改 Listen configuration

    重新启动 httpd 时,必须特别考虑更改听指令。在重新启动期间,httpd 保持端口绑定(如在原始 configuration 中),以避免为连接到服务器的任何新尝试生成“连接被拒绝”错误。如果对使用的与旧配置冲突的听指令集进行了更改,则 configuration 将失败,服务器将终止。

    例如,从 configuration 更改:

    Listen 127.0.0.1:80
    

    以下可能会失败,因为所有地址的 binding 到 port 80 与上的 binding 与 port 80 冲突。

    Listen 80
    

    要使此类配置更改生效,必须停止然后启动服务器。

    特殊 IPv6 注意事项

    越来越多的平台实现了 IPv6,APR在大多数平台上支持 IPv6,允许 httpd 分配 IPv6 套接字,并处理通过 IPv6 发送的请求。

    httpd 管理员的一个复杂因素是 IPv6 socket 是否可以同时处理 IPv4 连接和 IPv6 连接。使用 IPv6 socket 处理 IPv4 连接使用 IPv4-mapped IPv6 地址,这些地址在大多数平台上是默认允许的,但在 FreeBSD,NetBSD 和 OpenBSD 上默认是不允许的,以便在这些平台上匹配 system-wide policy。在默认情况下不允许它的系统上,特殊的配置参数可以更改 httpd 的此行为。

    另一方面,在某些平台上,例如 Linux 和 Tru64,处理 IPv6 和 IPv4 的**唯一方法是使用映射地址。如果希望httpd使用最少的套接字来处理 IPv4 和 IPv6 连接,这需要使用 IPv4-mapped IPv6 地址,请指定--enable-v4-mapped配置选项。

    --enable-v4-mapped是除 FreeBSD,NetBSD 和 OpenBSD 之外的所有平台的默认设置,因此这可能就是你的 httpd 的构建方式。

    如果您希望 httpd 仅处理 IPv4 连接,无论您的平台和 APR 支持什么,请在所有听指令上指定 IPv4 地址,如以下示例所示:

    Listen 0.0.0.0:80
    Listen 192.0.2.1:80
    

    如果您的平台支持它并且您希望 httpd 在单独的套接字上处理 IPv4 和 IPv6 连接(i.e.,以禁用 IPv4-mapped 地址),请指定--disable-v4-mapped配置选项。--disable-v4-mapped是 FreeBSD,NetBSD 和 OpenBSD 的默认设置。

    使用 Listen 指定协议

    大多数配置不需要听的可选第二个协议参数。如果未指定,https是 port 443 的默认值,http是所有其他端口的默认值。该协议用于确定哪个模块应处理请求,以及使用AcceptFilter指令应用协议特定的优化。

    如果要在 non-standard 端口上运行,则只需设置协议。例如,在 port 8443 上运行https站点:

    Listen 192.170.2.1:8443 https
    

    如何使用虚拟主机

    听指令不实现虚拟主机- 它只告诉主服务器要监听的地址和端口。如果没有使用<VirtualHost>指令,则服务器对所有接受的请求的行为方式相同。但是,<VirtualHost>可用于为一个或多个地址或端口指定不同的行为。要实现 VirtualHost,必须首先告诉服务器监听要使用的地址和 port。然后应为指定的地址创建<VirtualHost>部分,并使用 port 设置此虚拟 host 的行为。请注意,如果为服务器未侦听的地址和 port 设置了<VirtualHost>,则无法访问它。

    上篇:入门指南

    下篇:配置文件