我在apache / httpd上有一个web应用程序。 通过复制此应用程序并将其放在文档根目录下的不同目录中,我创build了该应用程序的一个新实例。 我也为每个实例build立了一个新的数据库。
我使用数据库领域来validation用户。
问题是,我使用MySQL来存储用户凭据,数据库信息存储在httpd.conf中,对所有实例都是全局的,像这样(没有密码):
DBDriver mysql DBDParams "host=server_host port=3306 dbname=db_name user=user_name" DBDMin 4 DBDKeep 8 DBDMax 20 DBDExptime 300
我想为不同的实例使用不同的数据库名称,或者根据访问的应用程序的实例进行一些映射,以便将数据库用于身份validation。
是否有可能解决使用内置支持Apache2authentication? 如果不是,可以采用什么策略来解决这个问题?
答案是为每个应用程序实例使用虚拟主机。 然后,您可以configuration每个虚拟主机使用的数据库。
例如把这个添加到httpd.conf中:
NameVirtualHost *:80 <VirtualHost *:80> ServerName 192.168.1.107 DocumentRoot /var/www/html/instance DBDriver mysql DBDParams "host=localhost port=3306 dbname=db_instance user=user" DBDMin 4 DBDKeep 8 DBDMax 20 DBDExptime 300 <Directory "/var/www/html/instance"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all AuthType Basic AuthName "Restricted Files" AuthBasicProvider dbd Require valid-user AuthDBDUserPWQuery "SELECT password FROM user WHERE user = %s" </Directory> </VirtualHost>