我有shellinabox运行在一个子域通过HTTPS和使用HTTP Basic Access Authentication使用下面的vhosts文件:
<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>
我目前有另一个子域上的网站,使用这个虚拟主机文件:
<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证书,但也有其他原因。
如何将第二个站点作为第一个站点的子目录?
从代理豁免/files :
ProxyPass /files !
把它放在根的ProxyPass上面。 看起来您还需要根据需要调整DocumentRoot或文件结构,以便从SSL vhost提供内容。
一个示例configuration:
<Proxy *> Order deny,allow Allow from all </Proxy> ProxyRequests Off ProxyPreserveHost On <Location "/"> ProxyPass http://localhost:8080/ </Location> <Location "/files"> ProxyPass ! </Location>