当根目录通过 ProxyPassed 指向其他目录时,如何将 Apache 站点放在子目录中?

当根目录通过 ProxyPassed 指向其他目录时,如何将 Apache 站点放在子目录中?

我有shellinabox通过下面的 vhosts 文件在子域上运行HTTPS并使用:HTTP Basic Access Authentication

<VirtualHost xx.xx.xx.xx:80>
        ServerName              host.bananas.net
        Redirect                301 / https://host.bananas.net
        CustomLog               ${APACHE_LOG_DIR}/access.log combined
        ErrorLog                ${APACHE_LOG_DIR}/error.log
</VirtualHost.net>

<VirtualHost xx.xx.xx.xx:443>
        ServerName              host.bananas.net
        SSLEngine               On
        SSLCertificateFile      /etc/apache2/ssl/bananas.net.crt
        SSLCertificateKeyFile   /etc/apache2/ssl/bananas.net.key
        SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
        SSLCACertificateFile    /etc/apache2/ssl/ca.pem
        SetEnvIf                User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
        ProxyRequests           Off
        ProxyPass               / http://localhost:4200/
        ProxyPassReverse        / http://localhost:4200/
        <Location />
                AuthUserFile    /etc/apache2/.htpasswd-secure
                AuthName        "Go Away!"
                AuthType        Basic
                Require         valid-user
                Order           Deny,Allow
                Allow           from all
        </Location>
        SetEnvIf                Request_URI "^/u" dontlog
        HostnameLookups         Double
        CustomLog               ${APACHE_LOG_DIR}/ssl_request.log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
        ErrorLog                ${APACHE_LOG_DIR}/error.log
</VirtualHost>

我目前在另一个子域上有另一个站点,使用这个 vhosts 文件:

<VirtualHost xx.xx.xx.xx:80>
        ServerName              files.bananas.net
        DocumentRoot            /var/www/files.bananas.net/

        CustomLog               ${APACHE_LOG_DIR}/access.log combined
        ErrorLog                ${APACHE_LOG_DIR}/error.log
</VirtualHost>

我更愿意让第二个站点位于https://host.bananas.net/files而不是http://files.bananas.net

这样做的主要原因是为了我可以使用相同的 SSL 证书,但也有其他原因。

如何将第二个站点移动为第一个站点的子目录?

答案1

免于/files代理:

ProxyPass /files !

将其放在根目录之上ProxyPass。看起来您还需要DocumentRoot根据需要调整文件结构以提供来自 SSL 虚拟主机的内容。

示例配置:

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

ProxyRequests           Off
ProxyPreserveHost       On
<Location "/">
        ProxyPass               http://localhost:8080/
</Location>
<Location "/files">
        ProxyPass               !
</Location>

相关内容