У меня есть веб-приложение на apache / httpd. Скопировав это приложение и поместив его в другой каталог в корне документа, я создаю новый экземпляр этого приложения. Я также настраиваю новую базу данных для каждого экземпляра.
Я использую область базы данных для аутентификации пользователя.
Проблема в том, что я использую 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
Я хотел бы использовать разные dbname для разных экземпляров или сделать какое-то сопоставление для какой базы данных использовать для аутентификации, в зависимости от того, к какому экземпляру приложения осуществляется доступ.
Можно ли решить с помощью встроенной поддержки аутентификации в Apache2? Если нет, какие стратегии можно применить для решения?
Ответ - использовать виртуальные хосты для каждого экземпляра приложения. Затем вы можете настроить, какую базу данных использовать для каждого виртуального хоста.
Например. добавьте это в 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>