目录、代理和位置 - 如何在同一个 Apache 配置中共存?

目录、代理和位置 - 如何在同一个 Apache 配置中共存?

通过反复试验,我创建了下面的 Apache 配置文件。

它旨在允许 localhost:8002 上的服务器和通过 WSGI 的 trac 服务器共享 LDAP 服务器并出现在同一个域/端口上。

这些规则单独起作用,但不能并行起作用。

具体来说,只有注释掉ProxyPass/行,trac WSGI 才能正确运行。如果没有该重定向,localhost:8002 上的服务器显然不会映射到传出的 8022 端口。ProxyPassReverse

我认为目录、代理和位置规则的混合是我的问题的根源 - 或者可能是它们的顺序?

WSGIDaemonProcess trac stack-size=524288 python-path=/usr/lib/python2.5/site-packages
WSGIScriptAlias /trac /home/web/foo/parts/trac/tracwsgi/cgi-bin/trac.wsgi

<VirtualHost foo.bar.com:8022>
    ServerName foo.bar.com
    ServerAlias foo.bar.com

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPreserveHost On
    ProxyPass / http://localhost:8002/VirtualHostBase/http/foo.bar.com:8022/foo/VirtualHostRoot/
    ProxyPassReverse / http://localhost:8002/VirtualHostBase/http/foo.bar.com:8022/foo/VirtualHostRoot/

    <Directory "/home/web/foo/parts/trac/tracwsgi/cgi-bin">
        WSGIApplicationGroup %{GLOBAL}
        Options +Indexes FollowSymLinks
        AllowOverride None
        Allow from all
        Order allow,deny
    </Directory>

    <Location "/trac">
        AuthBasicProvider ldap
        AuthType Basic
        AuthzLDAPAuthoritative off
        AuthName "Login"
        AuthLDAPURL "ldap://127.0.0.1:389/dc=foo-bar,dc=org?uid"
        AuthLDAPBindDN "cn=admin, dc=foo-bar, dc=org"
        AuthLDAPBindPassword secret
        require valid-user
    </Location>

</VirtualHost>

答案1

添加:

ProxyPass /trac !

在 ProxyPass 之前为 '/'。

看:

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass

您还缺少 WSGIProcessGroup 指令。该 Trac 实例不会在您创建的守护进程模式进程中运行。请参阅:

http://code.google.com/p/modwsgi/wiki/IntegrationWithTrac

相关内容