Добро пожаловать в базу знаний

Применение директивы Alias в Apache

0
1. Сопоставление URL ресурса с его физическим местоположением в файловой системе, независимо от его местоположения

Например, админка MODX и панель ISPmanager по умолчанию обе имеют одинаковый адрес: имя_домена/manager
Поэтому, чтобы не возникал конфликт доступа применяем директиву Alias.

Директива Alias берет путь /manager/ в URL и заменяет его на путь к файлу или каталогу /var/www/userXXXX/data/www/domain.ru/manager/
поэтому запрос к http://domain.ru/manager/index.php автоматически переводится в /var/www/userXXXX/data/www/domain.ru/manager/index.php

Обратите внимание, для корректного сопоставления префикса URL с префиксом каталога при включении/исключении косой черты в пути URL необходимо также включить/исключить косую черту в пути к файлу

1) Открываем конфиг апача: nano /etc/apache2/apache2.conf.

В секции VirtualHost добавляем alias:

<VirtualHost 5.9.59.109:81 >

        ServerName domain.ru

        AssignUserID userXXXX userXXXX

        AddType application/x-httpd-php-source .phps

        php_admin_value open_basedir "/var/www/userXXXX/data:."

        ...

        php_admin_value session.save_path "/var/www/userXXXX/data/mod-tmp"

        php_admin_value memory_limit "67108864"

        RLimitCPU 10

        RLimitMEM 67108864

        RLimitNPROC 1

        Alias /manager/ /var/www/userXXXX/data/www/domain.ru/manager/

</VirtualHost>

2) В конфиге nginx так же есть настройка, которая адрес /manager резервирует под панель.
Поэтому открываем конфиг nginx: nano /etc/nginx/nginx.conf
В секции server удаляем или комментируем строку
include /usr/local/ispmgr/etc/nginx.inc; 

server {
                server_name domain.ru www.domain.ru;
                listen 5.9.59.109;

                disable_symlinks if_not_owner from=$root_path;
                location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {

                ....
                root $root_path;}

                location ^~ /webstat/ {
                        auth_basic "Restricted area";
                        auth_basic_user_file /var/www/userXXXX/data/etc/1232443.passwd;
                        try_files $uri @fallback;
                }
                limit_conn userXXXX 2;
            include /usr/local/ispmgr/etc/nginx.inc;
 закомментировать эту строку
                set $root_path /var/www/userXXXX/data/www/domain.ru;
        } 

3) Выполняем restart сереров apache и nginx

4) Проверяем вход в админку MODX по адресу http://domain.ru/manager

 

Кроме директивы Alias для сопоставления можно использовать регулярные выражения (директива AliasMatch) и целые сценарии (директивы ScriptAlias и ScriptAliasMatch). Подробнее об этом -> тут

2. Создание постоянных псевдонимов команд с помощью alias

Например, если необходимо сохранить сложную команду под заданным именем для постоянного применения на сервере. Для этого Вам нужно вписать и сохранить значение alias в файле настроек оболочки (в Debian это Bash :/root/.bashrc)

Синтаксис alias:
• Cоздание псевдонима

alias <имя_псевдонима>=“<значение>/<команда> <аргумент>/<путь_к_файлу>”

1) Открываем файл:
~# nano ~/.bashrc
2) Находим свободное место для добавления псеводнима
и добавляем команду
alias n='service nginx restart'

alias1.png
3) Далее сохраним файл. Он будет автоматически загружен при запуске следующего сеанса.

4) Теперь командой n мы перезагружаем nginx

alias2.png

• Для просмотра всех заданных псеводнимов используется команда alias

alias4.png

• Для удобства можно создать отдельный файл - ~/.bash_aliases, в котором будут храниться все псевдонимы. Также это позволит уменьшить риск работы с ~/.bashrc.

Для этого в конец файла ~/.bashrc нужно добавить строки:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

Далее создать/открыть файл ~/.bash_aliases и вписать туда все нужные псевдонимы.

 Для отключения какого либо псевдонима без его удаления необходимо перед командой указать "\"

При запуске следующего сеанса мы увидим, что команда больше не определена

alias3.png