<HTML><BODY><div class="js-helper js-readmsg-msg">
        <style type="text/css"></style>
        <div>
                <base target="_self" href="https://e.mail.ru/">
                
            <div id="style_15302864020000000966_BODY"><div class="class_1530308427">
Не знаю насчет бредовости, но такое ощущение. что вы не совсем четко ее понимаете для себя.<br><br>1. Пользак - админ на своем ВПС. Вы - админ хоста.<br><br>2. Если пользак имеет доступ ФТП к директории /home/admin на ВПС, он может слить себе любой пхп файл.<br>Другой вариант, как он может это сделать - если у него есть шелл. Но вы можете положить пхп в '/home/user', а фтп дать '/home/user/ftp'. Технически, не важно, какие запросы делает пользак. Точнее, он может делать запросы, только разрешенные админом.<br>Важно, чтобы для всех правильных (с вашей точки зрения) запросов существовали локейшены. Тогда все запросы, для которых не нашлось подходящего локейшена считаем не правильными. Я обычно для таких заходов создаю мусорку типа:<br>location "" { return 404 ;}<br>Ее можно и логировать отдельно при желании.<br><br>3. Считаем, что пользак имеет ФТП только на '/home/user' , выше не поднимается. Вам нужно дать ему админку ЦМС, которая лежит в '/home/admin'. Т.е. пользак делает входящий запрос как <IP:port>/user и получает ответом хтмл - результат работы /home/admin/index.php .Но запрос может быть и такой: <IP:port>/admin/index.php, тогда беда.<br><br>Для этого и нужно проксировать запрос на бэкенд. Я ж вам сразу сказал изучайте location, rewrite, map и регексы.<br>Простой пример.<br>Допустим, входящий запрос <IP:port>/user<br>На него нужно дать ответом хтмл как результат работы /admin/index.php<br><br>location /user {<br>    rewrite "^/user$" /admin/index.php break;<br>    try_files   $uri<br>                =404<br>    ;<br>    proxy_pass <здесь ваш бэкенд>;<br>}<br><br>"^/user$" в кавычках, потому что здесь возможны варианты (реальный формат запроса, параметры и т.п.).<br><br>В довесок, для явного указания htm или php в запросе:<br>location ~ (\.html$|\.php$) { internal; }<br><br><br><br><blockquote style="border-left:1px solid #0857A6;margin:10px;padding:0 0 0 10px;">
        Пятница, 29 июня 2018, 17:36 +03:00 от al3x <<a href="mailto:nginx-forum@forum.nginx.org">nginx-forum@forum.nginx.org</a>>:<br>
        <br>
        <div id="">






<div class="js-helper_mailru_css_attribute_postfix js-readmsg-msg_mailru_css_attribute_postfix">
        <style></style>
        <div>
                
                
            <div id="style_15302830080000001014_BODY_mailru_css_attribute_postfix">Я уже начинаю думать, что у меня какая-то бредовая идея... еще немного и я<br>
откажусь от нее =)<br>
Не знаю как еще объяснить, но попробую...<br>
<br>
Есть файлы CMS:<br>
/home/admin/index.php<br>
/home/admin/modules/module.php<br>
/home/admin/template/news.html<br>
/home/admin/template/style.css<br>
<br>
Директория юзера:<br>
/home/user/ - у юзера есть доступ только к этой директории.<br>
<br>
При обращении по IP сервера nginx сначала смотрит в /home/user/ и если не<br>
находит там index.php, то смотрит в /home/admin/index.php и отдает его.<br>
<br>
Далее /home/admin/index.php выполняет свою работу и хочет обработать файл<br>
template/news.html. Nginx должен проверить, нет ли этого файла в директории<br>
юзера /home/user/template/news.html и если есть, то отдать его. Если этого<br>
файла нет, то отдать из папки /home/admin/template/news.html<br>
<br>
Затем юзер захотел создать свой личный модуль и положил его в папку<br>
/home/user/modules/new_module.php<br>
и когда /home/admin/index.php загружает модули из папки /modules/ то nginx<br>
должен сначала проверить все файлы в директории юзера /home/user/modules/, а<br>
затем здесь /home/admin/modules/ и таким образом подгрузить для PHP все<br>
модули из двух директорий, словно из одной.<br>
<br>
Т.е. директории должны быть как бы зеркалами друг друга.<br>
<br>
Это возможно сделать?<br>
<br>
Dmitriy Lyalyuev Wrote:<br>
-------------------------------------------------------<br>
> Может я чего не понимаю, но может стоит сделать локейшн типа<br>
> /user_content<br>
> и рут выставить ​в хомяк юзера?<br>
> Туда же и ФТП пусть смотрит с ограничением юзера в этом каталоге.<br>
> А все остальное юзеру не будет доступно от слова совсем.<br>
> <br>
> Задача простая как 3 копейки и слабо имеет отношение к  Nginx.<br>
> Или я чего-то не понимаю?<br>
> _______________________________________________<br>
> nginx-ru mailing list<br>
> <a href="//e.mail.ru/compose/?mailto=mailto%3anginx%2dru@nginx.org" target="_blank" rel=" noopener noreferrer">nginx-ru@nginx.org</a><br>
> <a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank" rel=" noopener noreferrer">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br>
<br>
Posted at Nginx Forum: <a href="https://forum.nginx.org/read.php?21,280329,280339#msg-280339" target="_blank" rel=" noopener noreferrer">https://forum.nginx.org/read.php?21,280329,280339#msg-280339</a><br>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="//e.mail.ru/compose/?mailto=mailto%3anginx%2dru@nginx.org" target="_blank" rel=" noopener noreferrer">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank" rel=" noopener noreferrer">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br data-mce-bogus="1"></div>
            
        
                
        </div>

        
</div>


</div>
</blockquote>
<br>
<br>--<br>
</div></div>
            
        
                <base target="_self" href="https://e.mail.ru/">
        </div>

        
</div></BODY></HTML>