Назад | Перейти на главную страницу

Как я могу использовать разные области базы данных для разных «экземпляров» приложения для аутентификации?

У меня есть веб-приложение на 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>