我有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>