bind.xml revision 7db9f691a00ead175b03335457ca296a33ddf31b
b442af56a5e2104663b84fb345c070ce185d4ab3slive<?xml version="1.0" encoding="UTF-8" ?>
b442af56a5e2104663b84fb345c070ce185d4ab3slive<!DOCTYPE manualpage SYSTEM "/style/manualpage.dtd">
b442af56a5e2104663b84fb345c070ce185d4ab3slive<?xml-stylesheet type="text/xsl" href="/style/manual.en.xsl"?>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
7db9f691a00ead175b03335457ca296a33ddf31bnd<manualpage metafile="bind.xml.meta">
b442af56a5e2104663b84fb345c070ce185d4ab3slive <relativepath href="."/>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <title>Binding</title>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <summary>
b442af56a5e2104663b84fb345c070ce185d4ab3slive <p>Configuring Apache to listen on specific addresses and ports.</p>
b442af56a5e2104663b84fb345c070ce185d4ab3slive </summary>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <seealso><a href="vhosts/">Virtual Hosts</a></seealso>
b442af56a5e2104663b84fb345c070ce185d4ab3slive <seealso><a href="dns-caveats.html">DNS Issues</a></seealso>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <section id="overview">
b442af56a5e2104663b84fb345c070ce185d4ab3slive <title>Overview</title>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <related>
b442af56a5e2104663b84fb345c070ce185d4ab3slive <modulelist>
b442af56a5e2104663b84fb345c070ce185d4ab3slive <module>core</module>
b442af56a5e2104663b84fb345c070ce185d4ab3slive <module>mpm_common</module>
b442af56a5e2104663b84fb345c070ce185d4ab3slive </modulelist>
b442af56a5e2104663b84fb345c070ce185d4ab3slive <directivelist>
b442af56a5e2104663b84fb345c070ce185d4ab3slive <directive module="core">VirtualHost</directive>
b442af56a5e2104663b84fb345c070ce185d4ab3slive <directive module="mpm_common">Listen</directive>
b442af56a5e2104663b84fb345c070ce185d4ab3slive </directivelist>
b442af56a5e2104663b84fb345c070ce185d4ab3slive </related>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <p>When Apache starts, it binds to some port and address on
b442af56a5e2104663b84fb345c070ce185d4ab3slive the local machine and waits for incoming requests. By default,
b442af56a5e2104663b84fb345c070ce185d4ab3slive it listens to all addresses on the machine. However, it needs to
b442af56a5e2104663b84fb345c070ce185d4ab3slive be told to listen on specific ports, or to listen on only selected
b442af56a5e2104663b84fb345c070ce185d4ab3slive addresses, or a combination. This is often combined with the
b442af56a5e2104663b84fb345c070ce185d4ab3slive Virtual Host feature which determines how Apache responds to
b442af56a5e2104663b84fb345c070ce185d4ab3slive different IP addresses, hostnames and ports.</p>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
9530629c5ba74f47ba0bad2cd4f432c9c5cd4ff4slive <p>The <directive module="mpm_common">Listen</directive>
9530629c5ba74f47ba0bad2cd4f432c9c5cd4ff4slive directive tells the server to accept
b442af56a5e2104663b84fb345c070ce185d4ab3slive incoming requests only on the specified port or
b442af56a5e2104663b84fb345c070ce185d4ab3slive address-and-port combinations. If only a port number is
9530629c5ba74f47ba0bad2cd4f432c9c5cd4ff4slive specified in the <directive module="mpm_common">Listen</directive>
9530629c5ba74f47ba0bad2cd4f432c9c5cd4ff4slive directive, the server
b442af56a5e2104663b84fb345c070ce185d4ab3slive listens to the given port on all interfaces. If an IP address
b442af56a5e2104663b84fb345c070ce185d4ab3slive is given as well as a port, the server will listen on the given
b442af56a5e2104663b84fb345c070ce185d4ab3slive port and interface. Multiple Listen directives may be used to
b442af56a5e2104663b84fb345c070ce185d4ab3slive specify a number of addresses and ports to listen on. The
b442af56a5e2104663b84fb345c070ce185d4ab3slive server will respond to requests from any of the listed
b442af56a5e2104663b84fb345c070ce185d4ab3slive addresses and ports.</p>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <p>For example, to make the server accept connections on both
b442af56a5e2104663b84fb345c070ce185d4ab3slive port 80 and port 8000, use:</p>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <example>
b442af56a5e2104663b84fb345c070ce185d4ab3slive Listen 80<br />
b442af56a5e2104663b84fb345c070ce185d4ab3slive Listen 8000
b442af56a5e2104663b84fb345c070ce185d4ab3slive </example>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <p>To make the server accept connections on two specified
b442af56a5e2104663b84fb345c070ce185d4ab3slive interfaces and port numbers, use</p>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <example>
b442af56a5e2104663b84fb345c070ce185d4ab3slive Listen 192.170.2.1:80<br />
b442af56a5e2104663b84fb345c070ce185d4ab3slive Listen 192.170.2.5:8000
b442af56a5e2104663b84fb345c070ce185d4ab3slive </example>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <p>IPv6 addresses must be surrounded in square brackets, as in the
b442af56a5e2104663b84fb345c070ce185d4ab3slive following example:</p>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <example>
b442af56a5e2104663b84fb345c070ce185d4ab3slive Listen [fe80::a00:20ff:fea7:ccea]:80
b442af56a5e2104663b84fb345c070ce185d4ab3slive </example>
b442af56a5e2104663b84fb345c070ce185d4ab3slive </section>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <section id="ipv6">
b442af56a5e2104663b84fb345c070ce185d4ab3slive <title>Special IPv6 Considerations</title>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick <p>A growing number of platforms implement IPv6, and APR supports
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick IPv6 on most of these platforms, allowing Apache to allocate IPv6
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick sockets and handle requests which were sent over IPv6.</p>
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick <p>One complicating factor for Apache administrators is whether or
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick not an IPv6 socket can handle both IPv4 connections and IPv6
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick connections. Handling IPv4 connections with an IPv6 socket uses
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick IPv4-mapped IPv6 addresses, which are allowed by default on most
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick platforms but are disallowed by default on FreeBSD, NetBSD, and
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick OpenBSD in order to match the system-wide policy on those
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick platforms. But even on systems where it is disallowed by default, a
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick special configure parameter can change this behavior for Apache.</p>
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick <p>If you want Apache to handle IPv4 and IPv6 connections with a
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick minimum of sockets, which requires using IPv4-mapped IPv6 addresses,
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick specify the <code>--enable-v4-mapped</code> configure option and use
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick generic Listen directives like the following:</p>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <example>
b442af56a5e2104663b84fb345c070ce185d4ab3slive Listen 80
b442af56a5e2104663b84fb345c070ce185d4ab3slive </example>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick <p>With <code>--enable-v4-mapped</code>, the Listen directives in the
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick default configuration file created by Apache will use this form.
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick <code>--enable-v4-mapped</code> is the default on all platforms but
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick FreeBSD, NetBSD, and OpenBSD, so this is probably how your Apache was
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick built.</p>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick <p>If you want Apache to handle IPv4 connections only, regardless of
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick what your platform and APR will support, specify an IPv4 address on all
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick Listen directives, as in the following examples:</p>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <example>
b4600e71d7e8201b3c14c67f4ef873cadd4c1d17trawick Listen 0.0.0.0:80<br />
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick Listen 192.170.2.1:80
b442af56a5e2104663b84fb345c070ce185d4ab3slive </example>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick <p>If you want Apache to handle IPv4 and IPv6 connections on separate
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick sockets (i.e., to disable IPv4-mapped addresses), specify the
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick <code>--disable-v4-mapped</code> configure option and use specific Listen
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick directives like the following:</p>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <example>
b4600e71d7e8201b3c14c67f4ef873cadd4c1d17trawick Listen [::]:80<br />
b442af56a5e2104663b84fb345c070ce185d4ab3slive Listen 0.0.0.0:80
b442af56a5e2104663b84fb345c070ce185d4ab3slive </example>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick <p>With <code>--disable-v4-mapped</code>, the Listen directives in the
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick default configuration file created by Apache will use this form.
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick <code>--disable-v4-mapped</code> is the default on FreeBSD, NetBSD, and
4566c682d671cfda9cfcb77ea3f8e3fb8a265010trawick OpenBSD.</p>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive </section>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <section id="virtualhost">
b442af56a5e2104663b84fb345c070ce185d4ab3slive <title>How This Works With Virtual Hosts</title>
b442af56a5e2104663b84fb345c070ce185d4ab3slive
b442af56a5e2104663b84fb345c070ce185d4ab3slive <p>Listen does not implement Virtual Hosts. It only tells the
b442af56a5e2104663b84fb345c070ce185d4ab3slive main server what addresses and ports to listen to. If no
9530629c5ba74f47ba0bad2cd4f432c9c5cd4ff4slive <directive module="core" type="section">VirtualHost</directive>
9530629c5ba74f47ba0bad2cd4f432c9c5cd4ff4slive directives are used, the server will behave
b442af56a5e2104663b84fb345c070ce185d4ab3slive the same for all accepted requests. However,
9530629c5ba74f47ba0bad2cd4f432c9c5cd4ff4slive <directive module="core" type="section">VirtualHost</directive>
9530629c5ba74f47ba0bad2cd4f432c9c5cd4ff4slive can be used to specify a different behavior
b442af56a5e2104663b84fb345c070ce185d4ab3slive for one or more of the addresses and ports. To implement a
b442af56a5e2104663b84fb345c070ce185d4ab3slive VirtualHost, the server must first be told to listen to the
9530629c5ba74f47ba0bad2cd4f432c9c5cd4ff4slive address and port to be used. Then a
9530629c5ba74f47ba0bad2cd4f432c9c5cd4ff4slive <directive module="core" type="section">VirtualHost</directive> section
b442af56a5e2104663b84fb345c070ce185d4ab3slive should be created for a specified address and port to set the
b442af56a5e2104663b84fb345c070ce185d4ab3slive behavior of this virtual host. Note that if the
9530629c5ba74f47ba0bad2cd4f432c9c5cd4ff4slive <directive module="core" type="section">VirtualHost</directive>
9530629c5ba74f47ba0bad2cd4f432c9c5cd4ff4slive is set for an address and port that the
b442af56a5e2104663b84fb345c070ce185d4ab3slive server is not listening to, it cannot be accessed.</p>
b442af56a5e2104663b84fb345c070ce185d4ab3slive </section>
b442af56a5e2104663b84fb345c070ce185d4ab3slive</manualpage>
b442af56a5e2104663b84fb345c070ce185d4ab3slive