Userdir с виртуальным хостом (Apache2)

Используя Ubuntu 16.04 и Apache 2.4.7 я хочу сделать два различных типов userdir.

  1. Данные находятся в /home/user/public_html/ и получил доступ только с помощью www.sample.com/~user/. (www2.sample.com/~user/ не должен работать.)
  2. Данные находятся в /home/user/public_html2/ и получил доступ только с помощью www2.sample.com/~user/. (www.sample.com/~user/ не должен работать.)

Я закончил делать два виртуальных хоста, использующие/etc/apache2/sites-availabile/000-default.conf, и затем попытался изменить mods-available/userdir.conf. Это было легко сделать или public_html или public_html2 доступным, но не удалось сделать обоих доступными с различными именами хостов. Вы могли учить меня, как сделать это?

Я не могу написать код, как это, но 000-default.conf, и userdir.conf похожи на них:

000-default.conf

<VirtualHost *:80>
    ServerAdmin admin@sample.com
    DocumentRoot /var/www/html/www
    ServerName www.sample.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</irtualHost>
<VirtualHost *:80>
    ServerAdmin admin@sample.com
    DocumentRoot /var/www/html/www2
    ServerName www2.sample.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</irtualHost>

userdir.conf (Первая половина этого кода является исходным userdir.conf. Я просто скопировал и вставил ниже исходного и изменил public_html на public_html2.)

<IfModule mod_userdir.c>
    UserDir public_html
    UserDir disabled root
    <Directory /home/*/public_html>
        AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        <Limit GET POST OPTIONS>
            Require all granted
        </Limit>
        <LimitExcept GET POST OPTIONS>
            Require all denied
        </LimitExcept>
    </Directory>
</IfModule>
<IfModule mod_userdir.c>
    UserDir public_html2
    UserDir disabled root
    <Directory /home/*/public_html2>
        AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        <Limit GET POST OPTIONS>
            Require all granted
        </Limit>
        <LimitExcept GET POST OPTIONS>
            Require all denied
        </LimitExcept>
    </Directory>
</IfModule>
2
задан 15 November 2016 в 16:56

1 ответ

Я не уверен я, 100% понимают Ваш вопрос, но я предполагаю, что Вы просите иметь 2 различных домена, где каждый из них использует различный UserDir.

РЕДАКТИРОВАНИЕ : Вы были на правильном пути. Единственная вещь у Вас были пропавшие без вести, то, что необходимо было поместить каждую из двух конфигураций UserDir в их соответствующей конфигурации VirtualHost, как замечено ниже.

Для этого, необходимо создать два виртуальных хоста, и каждый Виртуальный хост имел бы свои собственные конфигурации UserDir.

первый виртуальный хост содержал бы следующее:

# /etc/apache2/sites-available/com.sample.www.conf
<VirtualHost *:80>
    ServerName www.sample.com

    <IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root
        <Directory /home/*/public_html>
            AllowOverride FileInfo AuthConfig Limit Indexes
            Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
            <Limit GET POST OPTIONS>
                Require all granted
            </Limit>
            <LimitExcept GET POST OPTIONS>
                Require all denied
            </LimitExcept>
        </Directory>
    </IfModule>
</VirtualHost>

второй виртуальный хост содержал бы следующее:

# /etc/apache2/sites-available/com.sample.www2.conf
<VirtualHost *:80>
    ServerName www2.sample.com
    UserDir public_html2

    <IfModule mod_userdir.c>
        UserDir disabled root
        <Directory /home/*/public_html2>
            AllowOverride FileInfo AuthConfig Limit Indexes
            Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
            <Limit GET POST OPTIONS>
                Require all granted
            </Limit>
            <LimitExcept GET POST OPTIONS>
                Require all denied
            </LimitExcept>
        </Directory>
     </IfModule>
</VirtualHost>

, После того как это сделано, необходимо включить 2 виртуальных файла конфигурации хоста и Apache перезапуска.

$ sude a2dissite 000-default.conf
$ sudo a2ensite com.sample.www.conf
$ sudo a2ensite com.sample.www2.conf
$ sudo apache2ctl restart

Теперь, когда Вы открываете www.sample.com/~dan/, он будет использовать /home/dan/public_html/ и когда Вы откроете www2.sample.com/~dan/, он будет использовать /home/dan/public_html2/

0
ответ дан 2 December 2019 в 09:46

Другие вопросы по тегам:

Похожие вопросы: