Commit d1d9690d authored by Ryan Bloom's avatar Ryan Bloom
Browse files

Remove the Port directive. In it's place, the Listen directive

is now a required directive, which tells Apache what port to
listen on.  The ServerName directive has also been extended
to accept an optional port.  If the port is specified to the
ServerName, the server will report that port whenever it
reports the port that it is listening on.  This change was
made to ease configuration errors that stem from having a Port
directive, and a Listen directive.  In that situation, the server
would only listen to the port specified by the Listen command,
which caused a lot of confusion to users.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91293 13f79535-47bb-0310-9956-ffa450edef68
parent 0781ed8e
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
Changes with Apache 2.0.26-dev

  *) Remove the Port directive.  In it's place, the Listen directive
     is now a required directive, which tells Apache what port to
     listen on.  The ServerName directive has also been extended
     to accept an optional port.  If the port is specified to the
     ServerName, the server will report that port whenever it
     reports the port that it is listening on.  This change was
     made to ease configuration errors that stem from having a Port
     directive, and a Listen directive.  In that situation, the server
     would only listen to the port specified by the Listen command,
     which caused a lot of confusion to users.  [Ryan Bloom]

  *) Added mod_mime_magic, mod_unique_id and mod_vhost_alias to the Win32
     build, as loadable modules.  [William Rowe]

+1 −7
Original line number Diff line number Diff line
@@ -230,12 +230,6 @@ Listen @@Port@@
# virtual host being defined.
#

#
# Port: The port to which the standalone server listens. For
# ports < 1023, you will need httpd to be run as root initially.
#
Port @@Port@@

#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.  
@@ -270,7 +264,7 @@ ServerAdmin you@your.address
# You will have to access it by its address (e.g., http://123.45.67.89/)
# anyway, and this will make redirections work in a sensible way.
#
#ServerName new.host.name
#ServerName new.host.name:80

#
# DocumentRoot: The directory out of which you will serve your
+8 −70
Original line number Diff line number Diff line
@@ -100,8 +100,6 @@

      <li><a href="#options">Options</a></li>

      <li><a href="#port">Port</a></li>

      <li><a href="#require">Require</a></li>

      <li><a href="#rlimitcpu">RLimitCPU</a></li>
@@ -1907,72 +1905,6 @@
    <code>All</code>.</p>
    <hr />

    <h2><a id="port" name="port">Port directive</a></h2>
    <!--%plaintext &lt;?INDEX {\tt Port} directive&gt; -->
    <a href="directive-dict.html#Syntax"
    rel="Help"><strong>Syntax:</strong></a> Port
    <em>number</em><br />
     <a href="directive-dict.html#Default"
    rel="Help"><strong>Default:</strong></a> <code>Port
    80</code><br />
     <a href="directive-dict.html#Context"
    rel="Help"><strong>Context:</strong></a> server config<br />
     <a href="directive-dict.html#Status"
    rel="Help"><strong>Status:</strong></a> core 

    <p><em>Number</em> is a number from 0 to 65535; some port
    numbers (especially below 1024) are reserved for particular
    protocols. See <code>/etc/services</code> for a list of some
    defined ports; the standard port for the http protocol is
    80.</p>

    <p>The Port directive has two behaviors, the first of which is
    necessary for NCSA backwards compatibility (and which is
    confusing in the context of Apache).</p>

    <ul>
      <li>In the absence of any <a
      href="mpm_common.html#listen">Listen</a> directives
      specifying a port number, a Port directive given in the "main
      server" (<em>i.e.</em>, outside any <a
      href="#virtualhost">&lt;VirtualHost&gt;</a> section) sets the
      network port on which the server listens. If there are any
      Listen directives specifying <code>:number</code> then Port
      has no effect on what address the server listens at.</li>

      <li>The Port directive sets the <code>SERVER_PORT</code>
      environment variable (for <a href="mod_cgi.html">CGI</a> and
      <a href="mod_include.html">SSI</a>), and is used when the
      server must generate a URL that refers to itself (for example
      when creating an external redirect to itself). This behaviour
      is modified by <a
      href="#usecanonicalname">UseCanonicalName</a>.</li>
    </ul>
    The primary behavior of Port should be considered to be similar
    to that of the <a href="#servername">ServerName</a> directive.
    The ServerName and Port together specify what you consider to
    be the <em>canonical</em> address of the server. (See also <a
    href="#usecanonicalname">UseCanonicalName</a>.) 

    <p>Port 80 is one of Unix's special ports. All ports numbered
    below 1024 are reserved for system use, <em>i.e.</em>, regular
    (non-root) users cannot make use of them; instead they can only
    use higher port numbers. To use port 80, you must start the
    server from the root account. After binding to the port and
    before accepting requests, Apache will change to a low
    privileged user as set by the <a
    href="mpm_common.html#user">User directive</a>.</p>

    <p>If you cannot use port 80, choose any other unused port.
    Non-root users will have to choose a port number higher than
    1023, such as 8000.</p>

    <p>SECURITY: if you do start the server as root, be sure not to
    set <a href="mpm_common.html#user">User</a> to root. If you run
    the server as root whilst handling connections, your site may
    be open to a major security attack.</p>
    <hr />

    <h2><a id="require" name="require">Require directive</a></h2>
    <!--%plaintext &lt;?INDEX {\tt Require} directive&gt; -->
    <a href="directive-dict.html#Syntax"
@@ -2274,7 +2206,7 @@
    <!--%plaintext &lt;?INDEX {\tt ServerName} directive&gt; -->
    <a href="directive-dict.html#Syntax"
    rel="Help"><strong>Syntax:</strong></a> ServerName
    <em>fully-qualified-domain-name</em> <br />
    <em>fully-qualified-domain-name:port</em> <br />
     <a href="directive-dict.html#Context"
    rel="Help"><strong>Context:</strong></a> server config, virtual
    host<br />
@@ -2288,7 +2220,7 @@
    return the preferred hostname. For example:</p>

    <blockquote>
      <code>ServerName www.example.com</code>
      <code>ServerName www.example.com:80</code>
    </blockquote>
    would be used if the canonical (main) name of the actual
    machine were <code>simple.example.com</code>. 
@@ -2300,6 +2232,12 @@
    section specifies what hostname must appear in the request's
    <code>Host:</code> header to match this virtual host.</p>

    <p>This directive now takes allows a port to be added to the
    server name.  This allows an admin to assign the canonical
    port at the same time that the canonical name is assigned.
    The Port directive, which used to perform this role, has also
    been removed, easing configuration for all users. 

    <p><strong>See Also</strong>:<br />
     <a href="../dns-caveats.html">DNS Issues</a><br />
     <a href="../vhosts/">Apache virtual host
+4 −3
Original line number Diff line number Diff line
@@ -208,9 +208,10 @@

    <p>The Listen directive instructs Apache to listen to only
    specific IP addresses or ports; by default it responds to
    requests on all IP interfaces, but only on the port given by
    the <code><a href="core.html#port">Port</a></code>
    directive.</p>
    requests on all IP interfaces. The Listen directive is now
    a required directive. If it is not in the config file, the
    server will fail to start. This is a change from previous
    versions of Apache.

    <p>The Listen directive tells the server to accept incoming
    requests on the specified port or address-and-port combination.
+18 −6
Original line number Diff line number Diff line
@@ -1603,15 +1603,27 @@ static const char *set_server_string_slot(cmd_parms *cmd, void *dummy,
    return NULL;
}

static const char *server_port(cmd_parms *cmd, void *dummy, const char *arg)
static const char *server_hostname_port(cmd_parms *cmd, void *dummy, const char *arg)
{
    const char *err = ap_check_cmd_context(cmd, NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT);
    const char *portstr;
    const char *server;
    int port;

    if (err != NULL) {
	return err;
    }
    port = atoi(arg);
    portstr = ap_strchr_c(arg, ':');
    if (portstr) {
        cmd->server->server_hostname = apr_pstrndup(cmd->pool, arg, 
                                                    portstr - arg);
        portstr++;
        port = atoi(portstr);
    }
    else {
        cmd->server->server_hostname = apr_pstrdup(cmd->pool, arg);
        port = 80;
    }
    if (port <= 0 || port >= 65536) { /* 65536 == 1<<16 */
	return apr_pstrcat(cmd->temp_pool, "The port number \"", arg, 
			  "\" is outside the appropriate range "
@@ -2411,7 +2423,8 @@ AP_INIT_TAKE1("DefaultType", ap_set_string_slot,

/* Old server config file commands */

AP_INIT_TAKE1("Port", server_port, NULL, RSRC_CONF, "A TCP port number"),
AP_INIT_TAKE1("Port", ap_set_deprecated, NULL, RSRC_CONF, 
  "Port was replaced with Listen in Apache 2.0"),
AP_INIT_TAKE1("HostnameLookups", set_hostname_lookups, NULL,
  ACCESS_CONF|RSRC_CONF,
  "\"on\" to enable, \"off\" to disable reverse DNS lookups, or \"double\" to "
@@ -2419,9 +2432,8 @@ AP_INIT_TAKE1("HostnameLookups", set_hostname_lookups, NULL,
AP_INIT_TAKE1("ServerAdmin", set_server_string_slot,
  (void *)APR_XtOffsetOf (server_rec, server_admin), RSRC_CONF,
  "The email address of the server administrator"),
AP_INIT_TAKE1("ServerName", set_server_string_slot,
  (void *)APR_XtOffsetOf (server_rec, server_hostname), RSRC_CONF,
  "The hostname of the server"),
AP_INIT_TAKE1("ServerName", server_hostname_port, NULL, RSRC_CONF,
  "The hostname and port of the server"),
AP_INIT_TAKE1("ServerSignature", set_signature_flag, NULL, OR_ALL,
  "En-/disable server signature (on|off|email)"),
AP_INIT_TAKE1("ServerRoot", set_server_root, NULL, RSRC_CONF,
Loading