bind.xml revision 4e9f8c5414e5fe39b5393641533edca65f6e8b91
0N/A<?xml version="1.0" encoding="UTF-8" ?>
2362N/A<!DOCTYPE manualpage SYSTEM "/style/manualpage.dtd">
0N/A<?xml-stylesheet type="text/xsl" href="/style/manual.en.xsl"?>
0N/A<!-- $LastChangedRevision$ -->
0N/A
0N/A<!--
2362N/A Licensed to the Apache Software Foundation (ASF) under one or more
0N/A contributor license agreements. See the NOTICE file distributed with
2362N/A this work for additional information regarding copyright ownership.
0N/A The ASF licenses this file to You under the Apache License, Version 2.0
0N/A (the "License"); you may not use this file except in compliance with
0N/A the License. You may obtain a copy of the License at
0N/A
0N/A http://www.apache.org/licenses/LICENSE-2.0
0N/A
0N/A Unless required by applicable law or agreed to in writing, software
0N/A distributed under the License is distributed on an "AS IS" BASIS,
0N/A WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
0N/A See the License for the specific language governing permissions and
0N/A limitations under the License.
2362N/A-->
2362N/A
2362N/A<manualpage metafile="bind.xml.meta">
0N/A
0N/A <title>Binding</title>
0N/A
0N/A <summary>
0N/A <p>Configuring Apache HTTP Server to listen on specific addresses and ports.</p>
862N/A </summary>
862N/A
862N/A <seealso><a href="vhosts/">Virtual Hosts</a></seealso>
862N/A <seealso><a href="dns-caveats.html">DNS Issues</a></seealso>
862N/A
862N/A <section id="overview">
862N/A <title>Overview</title>
862N/A
862N/A <related>
862N/A <modulelist>
862N/A <module>core</module>
862N/A <module>mpm_common</module>
0N/A </modulelist>
0N/A <directivelist>
0N/A <directive module="core" type="section">VirtualHost</directive>
0N/A <directive module="mpm_common">Listen</directive>
0N/A </directivelist>
0N/A </related>
0N/A
0N/A
0N/A <p>When httpd starts, it binds to some port and address on
0N/A the local machine and waits for incoming requests. By default,
0N/A it listens to all addresses on the machine. However, it may need to
0N/A be told to listen on specific ports, or only on selected
0N/A addresses, or a combination of both. This is often combined with the
0N/A <a href="vhosts.html">Virtual Host</a> feature, which determines how
0N/A <code>httpd</code> responds to different IP addresses, hostnames and
0N/A ports.</p>
0N/A
0N/A <p>The <directive module="mpm_common">Listen</directive>
0N/A directive tells the server to accept
0N/A incoming requests only on the specified port(s) or
85N/A address-and-port combinations. If only a port number is
0N/A specified in the <directive module="mpm_common">Listen</directive>
0N/A directive, the server listens to the given port on all interfaces.
0N/A If an IP address is given as well as a port, the server will listen
0N/A on the given port and interface. Multiple <directive
0N/A module="mpm_common">Listen</directive> directives may be used to
0N/A specify a number of addresses and ports to listen on. The
0N/A server will respond to requests from any of the listed
0N/A addresses and ports.</p>
0N/A
0N/A <p>For example, to make the server accept connections on both
0N/A port 80 and port 8000, on all interfaces, use:</p>
0N/A
0N/A <example>
0N/A Listen 80<br />
0N/A Listen 8000
85N/A </example>
0N/A
0N/A <p>To make the server accept connections on port 80 for one interface,
0N/A and port 8000 on another, use</p>
0N/A
0N/A <example>
0N/A Listen 192.0.2.1:80<br />
0N/A Listen 192.0.2.5:8000
0N/A </example>
0N/A
0N/A <p>IPv6 addresses must be enclosed in square brackets, as in the
0N/A following example:</p>
0N/A
0N/A <example>
0N/A Listen [2001:db8::a00:20ff:fea7:ccea]:80
0N/A </example>
0N/A
0N/A <note type="warning"><p>Overlapping <directive
0N/A module="mpm_common">Listen</directive> directives will result in a
0N/A fatal error which will prevent the server from starting up.</p>
0N/A
0N/A <example>
0N/A (48)Address already in use: make_sock: could not bind to address [::]:80
0N/A </example>
0N/A </note>
0N/A
0N/A </section>
0N/A
0N/A <section id="ipv6">
0N/A <title>Special IPv6 Considerations</title>
0N/A
0N/A <p>A growing number of platforms implement IPv6, and
0N/A <glossary>APR</glossary> supports IPv6 on most of these platforms,
85N/A allowing httpd to allocate IPv6 sockets, and to handle requests sent
0N/A over IPv6.</p>
0N/A
0N/A <p>One complicating factor for httpd administrators is whether or
0N/A not an IPv6 socket can handle both IPv4 connections and IPv6
0N/A connections. Handling IPv4 connections with an IPv6 socket uses
0N/A IPv4-mapped IPv6 addresses, which are allowed by default on most
0N/A platforms, but are disallowed by default on FreeBSD, NetBSD, and
0N/A OpenBSD, in order to match the system-wide policy on those
85N/A platforms. On systems where it is disallowed by default, a
0N/A special <program>configure</program> parameter can change this behavior
0N/A for httpd.</p>
0N/A
0N/A <p>On the other hand, on some platforms, such as Linux and Tru64, the
85N/A <strong>only</strong> way to handle both IPv6 and IPv4 is to use
85N/A mapped addresses. If you want <code>httpd</code> to handle IPv4 and IPv6 connections
85N/A with a minimum of sockets, which requires using IPv4-mapped IPv6
85N/A addresses, specify the <code>--enable-v4-mapped</code> <program>
85N/A configure</program> option.</p>
85N/A
85N/A <p><code>--enable-v4-mapped</code> is the default on all platforms except
0N/A FreeBSD, NetBSD, and OpenBSD, so this is probably how your httpd was
85N/A built.</p>
0N/A
0N/A <p>If you want httpd to handle IPv4 connections only, regardless of
85N/A what your platform and APR will support, specify an IPv4 address on all
85N/A <directive module="mpm_common">Listen</directive> directives, as in the
85N/A following examples:</p>
85N/A
85N/A <example>
0N/A Listen 0.0.0.0:80<br />
0N/A Listen 192.0.2.1:80
0N/A </example>
0N/A
0N/A <p>If your platform supports it and you want httpd to handle IPv4 and
0N/A IPv6 connections on separate sockets (i.e., to disable IPv4-mapped
0N/A addresses), specify the <code>--disable-v4-mapped</code> <program>
0N/A configure</program> option. <code>--disable-v4-mapped</code> is the
0N/A default on FreeBSD, NetBSD, and OpenBSD.</p>
0N/A </section>
862N/A
862N/A <section id="protocol">
862N/A <title>Specifying the protocol with Listen</title>
862N/A <p>The optional second <var>protocol</var> argument of
862N/A <directive module="mpm_common">Listen</directive>
862N/A is not required for most
862N/A configurations. If not specified, <code>https</code> is the default for
862N/A port 443 and <code>http</code> the default for all other ports. The
862N/A protocol is used to determine which module should handle a request, and
862N/A to apply protocol specific optimizations with the
0N/A <directive module="core">AcceptFilter</directive> directive.</p>
0N/A
0N/A <p>You only need to set the protocol if you are running on non-standard
0N/A ports. For example, running an <code>https</code> site on port 8443:</p>
0N/A
0N/A <example>
0N/A Listen 192.170.2.1:8443 https
0N/A </example>
0N/A </section>
0N/A
0N/A <section id="virtualhost">
0N/A <title>How This Works With Virtual Hosts</title>
0N/A
0N/A <p> The <directive
862N/A module="mpm_common">Listen</directive> directive does not implement
862N/A Virtual Hosts - it only tells the
3292N/A main server what addresses and ports to listen on. If no
862N/A <directive module="core" type="section">VirtualHost</directive>
862N/A directives are used, the server will behave
862N/A in the same way for all accepted requests. However,
0N/A <directive module="core" type="section">VirtualHost</directive>
0N/A can be used to specify a different behavior
0N/A for one or more of the addresses or ports. To implement a
0N/A VirtualHost, the server must first be told to listen to the
0N/A address and port to be used. Then a
0N/A <directive module="core" type="section">VirtualHost</directive> section
0N/A should be created for the specified address and port to set the
0N/A behavior of this virtual host. Note that if the
0N/A <directive module="core" type="section">VirtualHost</directive>
0N/A is set for an address and port that the
0N/A server is not listening to, it cannot be accessed.</p>
0N/A </section>
0N/A</manualpage>
0N/A
0N/A