<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<meta content="noindex, nofollow" name="robots" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Glossary - Apache HTTP Server</title>
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<link href="./images/favicon.ico" rel="shortcut icon" /><link href="http://httpd.apache.org/docs/current/glossary.html" rel="canonical" /></head>
<body id="manual-page" class="no-sidebar"><div id="page-header">
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p>
<p class="apache">Apache HTTP Server Version 2.0</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.0</a></div><div id="page-content"><div class="retired"><h4>Please note</h4>
            <p>This document refers to the <strong>2.0</strong> version of Apache httpd, which <strong>is no longer maintained</strong>. Upgrade, and refer to the current version of httpd instead, documented at:</p>
        <ul><li><a href="http://httpd.apache.org/docs/current/">Current release version of Apache HTTP Server documentation</a></li></ul><p>You may follow <a href="http://httpd.apache.org/docs/current/glossary.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>Glossary</h1>
<div class="toplang">
<p><span>Available Languages: </span><a href="./de/glossary.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
<a href="./en/glossary.html" title="English">&nbsp;en&nbsp;</a> |
<a href="./es/glossary.html" hreflang="es" rel="alternate" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
<a href="./ko/glossary.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/glossary.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div>

    <p>This glossary defines some of the common terminology related to Apache in
      particular, and web serving in general.  More information on each concept
      is provided in the links.</p>
  </div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="definitions" id="definitions">Definitions</a></h2>

  <dl>
    <dt><a name="accesscontrol" id="accesscontrol">Access Control</a></dt>
    <dd>The restriction of access to network realms. In an Apache context
      usually the restriction of access to certain <em>URLs</em>.<br /> See:  <a href="howto/auth.html">Authentication, Authorization, and Access
      Control</a>
    </dd>
    
    <dt><a name="algorithm" id="algorithm">Algorithm</a></dt>
    
    <dd>An unambiguous formula or set of rules for solving a problem in a finite
      number of steps. Algorithms for encryption are usually called
      <dfn>Ciphers</dfn>.
    </dd>
    
    <dt><a name="apacheextensiontool" id="apacheextensiontool">APache
        eXtension Tool</a> <a name="apxs" id="apxs">(apxs)</a></dt>
    <dd>A perl script that aids in compiling <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#module">module</a> sources into Dynamic Shared Objects
      (<span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#dso">DSO</a>s) and helps install them in the
      Apache Web server.<br />
      See: Manual Page: <code class="program"><a href="./programs/apxs.html">apxs</a></code>
    </dd>

    <dt><a name="authentication" id="authentication">Authentication</a></dt>
    <dd>The positive identification of a network entity such as a server, a
      client, or a user.<br />
      See: <a href="howto/auth.html">Authentication, Authorization, and Access
      Control</a>
    </dd>

    <dt><a name="certificate" id="certificate">Certificate</a></dt>
    <dd>A data record used for authenticating network entities such
      as a server or a client. A certificate contains X.509 information pieces
      about its owner (called the subject) and the signing <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#certificationauthority">Certification Authority</a> (called
      the issuer), plus the owner's <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#publickey">public
      key</a> and the
      signature made by the CA. Network entities verify these signatures
      using CA certificates.<br />
      See: <a href="ssl/">SSL/TLS Encryption</a>
    </dd>

    <dt><a name="certificatsigningrequest" id="certificatsigningrequest">Certificate Signing Request</a>
      <a name="csr" id="csr">(CSR)</a></dt>
    <dd>An unsigned <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#certificate">certificate</a> for
      submission to a <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#certificationauthority">Certification
      Authority</a>, which signs it with the <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#privatekey">Private Key</a> of their CA
      <em>Certificate</em>. Once the CSR is signed, it becomes a real
      certificate.<br />
      See: <a href="ssl/">SSL/TLS Encryption</a>
    </dd>

    <dt><a name="certificationauthority" id="certificationauthority">Certification Authority</a>
      <a name="ca" id="ca">(CA)</a></dt>
    <dd>A trusted third party whose purpose is to sign certificates for network
      entities it has authenticated using secure means. Other network entities
      can check the signature to verify that a CA has authenticated the bearer
      of a certificate.<br />
      See: <a href="ssl/">SSL/TLS Encryption</a>
    </dd>

    <dt><a name="cipher" id="cipher">Cipher</a></dt>
    <dd>An algorithm or system for data encryption. Examples are DES, IDEA, RC4,
      etc.<br />
      See: <a href="ssl/">SSL/TLS Encryption</a>
    </dd>

    <dt><a name="ciphertext" id="ciphertext">Ciphertext</a></dt>
    <dd>The result after <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#plaintext">Plaintext</a> is
      passed through a <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#cipher">Cipher</a>.<br /> See: <a href="ssl/">SSL/TLS Encryption</a>
    </dd>

    <dt><a name="commongatewayinterface" id="commongatewayinterface">Common
        Gateway Interface</a> <a name="cgi" id="cgi">(CGI)</a></dt>
    <dd>A standard definition for an interface between a web server and an
      external program that allows the external program to service requests.
      The interface was originally defined by <a href="http://hoohoo.ncsa.uiuc.edu/cgi/overview.html">NCSA</a> but there
      is also an <a href="http://cgi-spec.golux.com/">RFC project</a>.<br />
      See: <a href="howto/cgi.html">Dynamic Content with CGI</a>
    </dd>

    <dt><a name="configurationdirective" id="configurationdirective">Configuration Directive</a></dt>
    <dd>See: <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#directive">Directive</a></dd>

    <dt><a name="configurationfile" id="configurationfile">Configuration
        File</a></dt>
    <dd>A text file containing <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#directive">Directives</a>
      that control the configuration of Apache.<br />
      See: <a href="configuring.html">Configuration Files</a>
    </dd>

    <dt><a name="connect" id="connect">CONNECT</a></dt>
    <dd>An HTTP <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#method">method</a> for proxying raw data
      channels over HTTP. It can be used to encapsulate other protocols, such as
      the SSL protocol.
    </dd>
    
    <dt><a name="context" id="context">Context</a></dt>
    <dd>An area in the <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#configurationfile">configuration
      files</a> where certain types of <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#directive">directives</a> are allowed.<br />
      See: <a href="mod/directive-dict.html#Context">Terms Used to Describe
      Apache Directives</a>
    </dd>

    <dt><a name="digitalsignature" id="digitalsignature">Digital
        Signature</a></dt>
    <dd>An encrypted text block that validates a certificate or other file. A
      <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#certificationauthority">Certification Authority</a>
      creates a signature by generating a hash of the <em>Public Key</em>
      embedded in a <em>Certificate</em>, then encrypting the hash with its own
      <em>Private Key</em>. Only the CA's public key can decrypt the signature,
      verifying that the CA has authenticated the network entity that owns the
      <em>Certificate</em>.<br />
      See: <a href="ssl/">SSL/TLS Encryption</a>
    </dd>
    
    <dt><a name="directive" id="directive">Directive</a></dt>
    <dd>A configuration command that controls one or more aspects of Apache's
      behavior.  Directives are placed in the <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#configurationfile">Configuration File</a><br />
    See: <a href="mod/directives.html">Directive Index</a>
    </dd>

    <dt><a name="dynamicsharedobject" id="dynamicsharedobject">Dynamic
        Shared Object</a> <a name="dso" id="dso">(DSO)</a></dt>
    <dd><span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#module">Modules</a> compiled separately from the
      Apache <code class="program"><a href="./programs/httpd.html">httpd</a></code> binary that can be loaded on-demand.<br />
      See: <a href="dso.html">Dynamic Shared Object Support</a>
    </dd>

    <dt><a name="environmentvariable" id="environmentvariable">Environment
        Variable</a> <a name="env-variable" id="env-variable">(env-variable)</a></dt>
    <dd>Named variables managed by the operating system shell and used to store
      information and communicate between programs.  Apache also contains
      internal variables that are referred to as environment variables, but are
      stored in internal Apache structures, rather than in the shell
      environment.<br />
      See: <a href="env.html">Environment Variables in Apache</a>
    </dd>

    <dt><a name="export-crippled" id="export-crippled">Export-Crippled</a></dt>
    <dd>Diminished in cryptographic strength (and security) in order to comply
      with the United States' Export Administration Regulations (EAR).
      Export-crippled cryptographic software is limited to a small key size,
      resulting in <em>Ciphertext</em> which usually can be decrypted by brute
      force.<br />
      See: <a href="ssl/">SSL/TLS Encryption</a>
    </dd>

    <dt><a name="filter" id="filter">Filter</a></dt>
    <dd>A process that is applied to data that is sent or received by the
      server.  Input filters process data sent by the client to the server,
      while output filters process documents on the server before they are sent
      to the client.  For example, the <code>INCLUDES</code> output filter
      processes documents for <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#ssi">Server Side
      Includes</a>.<br />
      See: <a href="filter.html">Filters</a>
    </dd>

    <dt><a name="fully-qualifieddomain-name" id="fully-qualifieddomain-name">Fully-Qualified Domain-Name</a>
      <a name="fqdn" id="fqdn">(FQDN)</a></dt>
    <dd>The unique name of a network entity, consisting of a hostname and a
      domain name that can resolve to an IP address. For example,
      <code>www</code> is a hostname, <code>example.com</code> is a domain name,
      and <code>www.example.com</code> is a fully-qualified domain name.
    </dd> 
    
    <dt><a name="handler" id="handler">Handler</a></dt>
    <dd>An internal Apache representation of the action to be performed when a
      file is called. Generally, files have implicit handlers, based on the file
      type. Normally, all files are simply served by the server, but certain
      file types are "handled" separately.  For example, the
      <code>cgi-script</code> handler designates files to be processed as
      <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#cgi">CGIs</a>.<br />
      See: <a href="handler.html">Apache's Handler Use</a>
    </dd>

    <dt><a name="hash" id="hash">Hash</a></dt>
    <dd>A mathematical one-way, irreversable algorithm generating a string with
       fixed-length from another string of any length. Different input strings
       will usually produce different hashes (depending on the hash function).
    </dd>

    <dt><a name="header" id="header">Header</a></dt>
    <dd>The part of the <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#http">HTTP</a> request and
      response that is sent before the actual content, and that contains
      meta-information describing the content.
    </dd> 
    
    <dt><a name="htaccess" id="htaccess">.htaccess</a></dt> 
    <dd>A <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#configurationfile">configuration file</a> that
      is placed inside the web tree and applies configuration <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#directive">directives</a> to the directory where it is
      placed and all sub-directories.  Despite its name, this file can hold
      almost any type of directive, not just access-control directives.<br />
      See: <a href="configuring.html">Configuration Files</a>
    </dd>

    <dt><a name="httpd.conf" id="httpd.conf">httpd.conf</a></dt>
    <dd>The main Apache <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#configurationfile">configuration
      file</a>.  The default location is
      <code>/usr/local/apache2/conf/httpd.conf</code>, but it may be moved using
      run-time or compile-time configuration.<br />
      See: <a href="configuring.html">Configuration Files</a>
    </dd>

    <dt><a name="hypertexttransferprotocol" id="hypertexttransferprotocol">HyperText Transfer Protocol</a>
      <a name="http" id="hhtp">(HTTP)</a></dt>
    <dd>The standard transmission protocol used on the World Wide Web.  Apache
      implements version 1.1 of the protocol, referred to as HTTP/1.1 and
      defined by <a href="http://ietf.org/rfc/rfc2616.txt">RFC 2616</a>.
    </dd>

    <dt><a name="https" id="https">HTTPS</a></dt>
    <dd>The HyperText Transfer Protocol (Secure), the standard encrypted
      communication mechanism on the World Wide Web. This is actually just HTTP
      over <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#ssl">SSL</a>.<br />
      See: <a href="ssl/">SSL/TLS Encryption</a>
    </dd> 

    <dt><a name="method" id="method">Method</a></dt>
    <dd>In the context of <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#http">HTTP</a>, an action to
      perform on a resource, specified on the request line by the client.  Some
      of the methods available in HTTP are <code>GET</code>, <code>POST</code>,
      and <code>PUT</code>.
    </dd> 
    
    <dt><a name="messagedigest" id="messagedigest">Message Digest</a></dt>
    <dd>A hash of a message, which can be used to verify that the contents of
      the message have not been altered in transit.<br />
      See: <a href="ssl/">SSL/TLS Encryption</a>
    </dd>

    <dt><a name="mime-type" id="mime-type">MIME-type</a></dt>
    <dd>A way to describe the kind of document being transmitted.  Its name
      comes from that fact that its format is borrowed from the Multipurpose
      Internet Mail Extensions.  It consists of a major type and a minor type,
      separated by a slash.  Some examples are <code>text/html</code>,
      <code>image/gif</code>, and <code>application/octet-stream</code>.  In
      HTTP, the MIME-type is transmitted in the <code>Content-Type</code>
      <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#header">header</a>.<br />
      See: <a href="mod/mod_mime.html">mod_mime</a>
    </dd>

    <dt><a name="module" id="module">Module</a></dt>
    <dd>An independent part of a program.  Much of Apache's functionality is
      contained in modules that you can choose to include or exclude.  Modules
      that are compiled into the Apache <code class="program"><a href="./programs/httpd.html">httpd</a></code> binary are
      called <dfn>static modules</dfn>, while modules that are stored
      separately and can be optionally loaded at run-time are called
      <dfn>dynamic modules</dfn> or <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#dso">DSOs</a>.
      Modules that are included by default
      are called <dfn>base modules</dfn>. Many modules are available for Apache
      that are not distributed as part of the Apache HTTP Server <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#tarball">tarball</a>.  These are referred to as
      <dfn>third-party modules</dfn>.<br />
      See: <a href="mod/">Module Index</a>
    </dd>

    <dt><a name="modulemagicnumber" id="modulemagicnumber">Module Magic
      Number</a> (<a name="mmn" id="mmn">MMN</a>)</dt>
    <dd>Module Magic Number is a constant defined in the Apache source code that
      is associated with binary compatibility of modules. It is changed when
      internal Apache structures, function calls and other significant parts of
      API change in such a way that binary compatibility cannot be guaranteed
      any more. On MMN change, all third party modules have to be at least
      recompiled, sometimes even slightly changed in order to work with the new
      version of Apache.
    </dd>

    <dt><a name="openssl" id="openssl">OpenSSL</a></dt>
    <dd>The Open Source toolkit for SSL/TLS<br />
      See <a href="http://www.openssl.org/">http://www.openssl.org/</a>#
    </dd>

    <dt><a name="passphrase" id="passphrase">Pass Phrase</a></dt>
    <dd>The word or phrase that protects private key files. It prevents
      unauthorized users from encrypting them. Usually it's just the secret
      encryption/decryption key used for <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#cipher">Ciphers</a>.<br />
      See: <a href="ssl/">SSL/TLS Encryption</a>
    </dd>

    <dt><a name="plaintext" id="plaintext">Plaintext</a></dt>
    <dd>The unencrypted text.</dd>

    <dt><a name="privatekey" id="privatekey">Private Key</a></dt>
    <dd>The secret key in a <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#publickeycryptography">Public Key
      Cryptography</a> system, used to decrypt incoming messages and
      sign outgoing ones.<br />
      See: <a href="ssl/">SSL/TLS Encryption</a>
    </dd>
    
    <dt><a name="proxy" id="proxy">Proxy</a></dt>
    <dd>An intermediate server that sits between the client and the <em>origin
        server</em>.  It accepts requests from clients, transmits those requests
      on to the origin server, and then returns the response from the origin
      server to the client.  If several clients request the same content, the
      proxy can deliver that content from its cache, rather than requesting it
      from the origin server each time, thereby reducing response time.<br />
      See: <a href="mod/mod_proxy.html">mod_proxy</a>
    </dd>

    <dt><a name="publickey" id="publickey">Public Key</a></dt>
    <dd>The publicly available key in a <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#publickeycryptography">Public Key Cryptography</a> system,
      used to encrypt messages bound for its owner and to decrypt signatures
      made by its owner.<br />
      See: <a href="ssl/">SSL/TLS Encryption</a>
    </dd>

    <dt><a name="publickeycryptography" id="publickeycryptography">Public Key Cryptography</a></dt>
    <dd>The study and application of asymmetric encryption systems, which use
      one key for encryption and another for decryption. A corresponding pair of
      such keys constitutes a key pair. Also called Asymmetric Cryptography.
      <br />
      See: <a href="ssl/">SSL/TLS Encryption</a>
    </dd> 

    <dt><a name="regularexpresion" id="regularexpresion">Regular Expression</a>
      <a name="regex" id="regex">(Regex)</a></dt>
    <dd>A way of describing a pattern in text - for example, "all the words that
      begin with the letter A" or "every 10-digit phone number" or even "Every
      sentence with two commas in it, and no capital letter Q". Regular
      expressions are useful in Apache because they let you apply certain
      attributes against collections of files or resources in very flexible ways
      - for example, all .gif and .jpg files under any "images" directory could
      be written as "<code>/images/.*(jpg|gif)$</code>".  Apache uses Perl
      Compatible Regular Expressions provided by the <a href="http://www.pcre.org/">PCRE</a> library.
  </dd> 

  <dt><a name="reverseproxy" id="reverseproxy">Reverse Proxy</a></dt>
  <dd>A <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#proxy">proxy</a> server that appears to the client
    as if it is an <em>origin server</em>.  This is useful to hide the real
    origin server from the client for security reasons, or to load balance.
  </dd>
  
  <dt><a name="securesocketslayer" id="securesocketslayer">Secure Sockets
      Layer</a> <a name="ssl" id="ssl">(SSL)</a></dt>
  <dd>A protocol created by Netscape Communications Corporation for general
    communication authentication and encryption over TCP/IP networks.  The most
    popular usage is <em>HTTPS</em>, i.e. the HyperText Transfer Protocol (HTTP)
    over SSL.<br />
    See: <a href="ssl/">SSL/TLS Encryption</a>
  </dd> 

  <dt><a name="serversideincludes" id="serversideincludes">Server Side
      Includes</a> <a name="ssi" id="ssi">(SSI)</a></dt>
  <dd>A technique for embedding processing directives inside HTML files.<br />
    See: <a href="howto/ssi.html">Introduction to Server Side Includes</a>
  </dd>
  
  <dt><a name="session" id="session">Session</a></dt>
  <dd>The context information of a communication in general.</dd>

  <dt><a name="ssleay" id="ssleay">SSLeay</a></dt>
  <dd>The original SSL/TLS implementation library developed by Eric A.
    Young
  </dd> 

  <dt><a name="symmetriccryptophraphy" id="symmetriccryptophraphy">Symmetric
      Cryptography</a></dt>
  <dd>The study and application of <em>Ciphers</em> that use a single secret key
    for both encryption and decryption operations.<br />
    See: <a href="ssl/">SSL/TLS Encryption</a>
  </dd>

  <dt><a name="tarball" id="tarball">Tarball</a></dt>
  <dd>A package of files gathered together using the <code>tar</code> utility.
    Apache distributions are stored in compressed tar archives or using
    pkzip.
  </dd> 

  <dt><a name="transportlayersecurity" id="transportlayersecurity">Transport
      Layer Security</a> <a name="tls" id="tls">(TLS)</a></dt>
  <dd>The successor protocol to SSL, created by the Internet Engineering Task
    Force (IETF) for general communication authentication and encryption over
    TCP/IP networks. TLS version 1 is nearly identical with SSL version 3.<br />
    See: <a href="ssl/">SSL/TLS Encryption</a>
  </dd>

  <dt><a name="uniformresourcelocator" id="uniformresourcelocator">Uniform
      Resource Locator</a> <a name="url" id="url">(URL)</a></dt>
  <dd>The name/address of a resource on the Internet.  This is the common
    informal term for what is formally called a <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#uniformresourceidentifier">Uniform Resource Identifier</a>.
    URLs are usually made up of a scheme, like <code>http</code> or
    <code>https</code>, a hostname, and a path.  A URL for this page is
    <code>http://httpd.apache.org/docs/2.0/glossary.html</code>.
  </dd> 

  <dt><a name="uniformresourceidentifier" id="uniformresourceidentifier">Uniform Resource Identifier</a>
    <a name="URI" id="URI">(URI)</a></dt>
  <dd>A compact string of characters for identifying an abstract or physical
    resource.  It is formally defined by <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>.  URIs used on the
    world-wide web are commonly referred to as <span title="see glossary">&#8594;</span>&nbsp;<a href="./glossary.html#url">URLs</a>.
  </dd> 

  <dt><a name="virtualhosting" id="virtualhosting">Virtual Hosting</a></dt>
  <dd>Serving multiple websites using a single instance of Apache.  <em>IP
      virtual hosting</em> differentiates between websites based on their IP
    address, while <em>name-based virtual hosting</em> uses only the name of the
    host and can therefore host many sites on the same IP address.<br />
    See: <a href="vhosts/">Apache Virtual Host documentation</a>
  </dd>

  <dt><a name="x.509" id="x.509">X.509</a></dt>
  <dd>An authentication certificate scheme recommended by the International
    Telecommunication Union (ITU-T) which is used for SSL/TLS authentication.<br /> See: <a href="ssl/">SSL/TLS Encryption</a>
  </dd>
</dl>
</div></div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="./de/glossary.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
<a href="./en/glossary.html" title="English">&nbsp;en&nbsp;</a> |
<a href="./es/glossary.html" hreflang="es" rel="alternate" title="Espa&#241;ol">&nbsp;es&nbsp;</a> |
<a href="./ko/glossary.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/glossary.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2013 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossary</a> | <a href="./sitemap.html">Sitemap</a></p></div>
</body></html>