Pull to refresh

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

Reading time 2 min
Views 4.3K
Конечно понимаю, что это может быть и не нужно никому, коль не нашел должного решения на просторах Интернета. Однако раньше, когда компьютеры были большими, а мы маленькими, были популярны так называемые домашние странички. У гордого индейца даже модуль под это дело есть — userdir.
Недавно (июнь, 2009) решил индейца загнать в бекенд, а фронтендом настроить nginx. Так вот готового решения для организации фронтенда для nginx'а не обнаружил. Недолго думая, почесал подбородок и накатал следующую конфигурацию к nginx'у. Представьте испытанное мною счастье когда это заработало.
Итак, задача заставить в фронтенде отдавать содержимое из хомдира пользователя — /home/user/public_html. Запрос к которому в браузере выглядит как 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;
}

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

… путешествие продолжается :)
Tags:
Hubs:
+15
Comments 50
Comments Comments 50

Articles