Шукати в цьому блозі

пʼятницю, 19 червня 2009 р.

nginx - настройка фронтенда к ~username - public_html

Конечно понимаю, что это может быть и не нужно никому, коль не нашел должного решения на просторах Интернета. Однако раньше, когда компьютеры были большими, а мы маленькими, были популярны так называемые домашние странички. У гордого индейца даже модуль под это дело есть - userdir.
Недавно решил индейца загнать в бекенд, а фронтендом настроить nginx. Так вот готового решения для организации фронтенда для nginx'а не обнаружил. Недолго думая, почесал подбородок и накатал следующую конфигурацию к nginx'у. Представьте испытанное мною счастье когда это заработало.
Итак, задача заставить в фронтенде отдавать содержимое из хомдира пользователя - /home/user/public_html. Запрос к которому в браузере выглядит как http://site.name/~user:

location ~ ^/~([^/]*)/(.*\.(bmp|jpg|jpeg|gif|ico|png|css|doc|txt|js|zip|iso|tgz|gz|rar|bz2|7z|xls|exe|pdf|ppt|tar|wav|avi|rtf|mp3|mp4|mov|mpeg|mpg)) {
    access_log          /var/log/nginx/access-frontend.homedir.site.name.log;
    alias               /home/$1/public_html/$2;
    expires             5d;
    limit_rate          50k;
}

location ~ ^/~([^/]*)/(.*) {
    access_log          /var/log/nginx/access-backend.homedir.site.name.log;
    proxy_set_header    Host  $host;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass          http://127.0.0.1:60080;
    proxy_redirect      off;
}

location ~* ^.+\.(bmp|jpg|jpeg|gif|ico|png|css|doc|txt|js|zip|iso|tgz|gz|rar|bz2|7z|xls|exe|pdf|ppt|tar|wav|avi|rtf|mp3|mp4|mov|mpeg|mpg)$ {
    access_log          /var/log/nginx/access-frontend.site.name.log;
    expires             5d;
    limit_rate          50k;
    if ($http_user_agent ~ FDM|Download) {
        limit_rate      50k;
    }
}

location = / { rewrite . /index.php last; }

location / {
    access_log          /var/log/nginx/access-backend.site.name.log;
    proxy_set_header    Host  $host;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass          http://127.0.0.1:60080;
    proxy_redirect      off;
}


Собственно на этом всё :) Расширения для файлов обрабатываемых в фронтенде
можете придумать и добавить самостоятельно в регулярное выражение.
Естественно, что остальную конфигурацию придумываете самостоятельно - это лишь шаблон на заметку :)

... путешествие продолжается :)

Немає коментарів: