![当根目录通过 ProxyPassed 指向其他目录时,如何将 Apache 站点放在子目录中?](https://linux22.com/image/561018/%E5%BD%93%E6%A0%B9%E7%9B%AE%E5%BD%95%E9%80%9A%E8%BF%87%20ProxyPassed%20%E6%8C%87%E5%90%91%E5%85%B6%E4%BB%96%E7%9B%AE%E5%BD%95%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E5%B0%86%20Apache%20%E7%AB%99%E7%82%B9%E6%94%BE%E5%9C%A8%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AD%EF%BC%9F.png)
我有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>