На меня много кто ругается, что я не люблю php_fpm и не люблю писать реврайты. И каждый раз я отвечаю, что вы не умеет готовить apache2. Продолжим разговор на эту тему.
Есть у apache2 бесполезный модуль. Называется он mod_alias. Почему он бесполезен… Да очень просто — вся его функциональность дублируется в стандартной поставке nginx. И опять же — nginx-овая идеология аналогичных директив намного более безопасная.
За что отвечает этот модуль. По сути он отвечает за 2 важные директивы — Alias и Redirect.
Начнем с Redirect. Приведу несколько примеров редиректов в nginx.
1) редиректим http://www.site.ru/something на http://site.ru
Permanent redirect:
rewrite ^/ http://site.ru/ permanent;
Temporary redirect:
rewrite ^/ http://site.ru/ ;
2) редиректим http://www.site.ru/something на http://site.ru/something, где something = любое содержимое параметра GET:
rewrite ^/(.*) http://site.ru/$1 permanent;
rewrite ^/(.*) http://site.ru/$1 ;
Естественно, что эти примеру нужно вписывать примерно сюда:
server {
server_name www.site.ru;
listen 80;
#здесь редиректы
}
3) простые редиректы:
rewrite /info http://info.site.ru permanent;
rewrite /billing https://billing.site.ru ;
Вот. С редиректами вроде разобрались.
Теперь насчет Alias. С Alias для статики всё очень просто. Пишем такое:
location /deb-packages {
alias /home/git/compiled;
}
Или ещё проще, если содержимое /deb-packages должно смотреть в папку /home/git/deb-packages (так просто быстрее):
location /deb-packages {
root /home/git;
}
Возникает некоторая сложность, если нам нужно в такой alias запхнуть обработку php.
У меня это выглядит примерно так:
location /phpmyadmin {
alias /phpmyadmin/install/dir;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:81;
}
И phpmyadmin я оставляю, обычно, только на одном домене.
Ну и попробуем выключить mod_alias:
a2dismod alias
/etc/init.d/apache2 reload
Apache будет ругаться на строки в вашем конфиге — найдите их, удалите/закомментируйте. После чего спокойно запускайте apache.
Комментариев пока нет.