<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<modulesynopsis metafile="mod_proxy_uwsgi.xml.meta">

<name>mod_proxy_uwsgi</name>
<description>UWSGI gateway module for <module>mod_proxy</module></description>
<status>Extension</status>
<sourcefile>mod_proxy_uwsgi.c</sourcefile>
<identifier>proxy_uwsgi_module</identifier>
<compatibility>Available in version 2.4.30 and later</compatibility>

<summary>
    <p>This module <em>requires</em> the service of <module
    >mod_proxy</module>. It provides support for the
    <a href="http://uwsgi-docs.readthedocs.io/en/latest/index.html">UWSGI protocol</a>.</p>

    <p>Thus, in order to get the ability of handling the UWSGI protocol,
    <module>mod_proxy</module> and <module>mod_proxy_uwsgi</module> have to
    be present in the server.</p>

    <note type="warning"><title>Warning</title>
      <p>Do not enable proxying until you have <a
      href="mod_proxy.html#access">secured your server</a>. Open proxy
      servers are dangerous both to your network and to the Internet at
      large.</p>
    </note>
</summary>

<seealso><module>mod_proxy</module></seealso>
<seealso><module>mod_proxy_balancer</module></seealso>

<section id="examples"><title>Examples</title>
    <p>Remember, in order to make the following examples work, you have to
    enable <module>mod_proxy</module> and <module>mod_proxy_uwsgi</module>.</p>

    <example><title>Simple gateway</title>
    <highlight language="config">
ProxyPass "/uwsgi-bin/" "uwsgi://localhost:4000/"
      </highlight>
    </example>

    <p>The balanced gateway needs <module>mod_proxy_balancer</module> and
    at least one load balancer algorithm module, such as
    <module>mod_lbmethod_byrequests</module>, in addition to the proxy
    modules listed above.  <module>mod_lbmethod_byrequests</module> is the
    default, and will be used for this example configuration.</p>

    <example><title>Balanced gateway</title>
    <highlight language="config">
ProxyPass "/uwsgi-bin/" "balancer://somecluster/"
&lt;Proxy balancer://somecluster&gt;
    BalancerMember uwsgi://localhost:4000
    BalancerMember uwsgi://localhost:4001
&lt;/Proxy&gt;
    </highlight>
    </example>
</section>

</modulesynopsis>
