Re[6]: Запуск php скриптов из разных директории

CoDDoC coddoc на mail.ru
Пт Июн 29 15:37:10 UTC 2018


Не знаю насчет бредовости, но такое ощущение. что вы не совсем четко ее понимаете для себя.

1. Пользак - админ на своем ВПС. Вы - админ хоста.

2. Если пользак имеет доступ ФТП к директории /home/admin на ВПС, он может слить себе любой пхп файл.
Другой вариант, как он может это сделать - если у него есть шелл. Но вы можете положить пхп в '/home/user', а фтп дать '/home/user/ftp'. Технически, не важно, какие запросы делает пользак. Точнее, он может делать запросы, только разрешенные админом.
Важно, чтобы для всех правильных (с вашей точки зрения) запросов существовали локейшены. Тогда все запросы, для которых не нашлось подходящего локейшена считаем не правильными. Я обычно для таких заходов создаю мусорку типа:
location "" { return 404 ;}
Ее можно и логировать отдельно при желании.

3. Считаем, что пользак имеет ФТП только на '/home/user' , выше не поднимается. Вам нужно дать ему админку ЦМС, которая лежит в '/home/admin'. Т.е. пользак делает входящий запрос как <IP:port>/user и получает ответом хтмл - результат работы /home/admin/index.php .Но запрос может быть и такой: <IP:port>/admin/index.php, тогда беда.

Для этого и нужно проксировать запрос на бэкенд. Я ж вам сразу сказал изучайте location, rewrite, map и регексы.
Простой пример.
Допустим, входящий запрос <IP:port>/user
На него нужно дать ответом хтмл как результат работы /admin/index.php

location /user {
    rewrite "^/user$" /admin/index.php break;
    try_files   $uri
                =404
    ;
    proxy_pass <здесь ваш бэкенд>;
}

"^/user$" в кавычках, потому что здесь возможны варианты (реальный формат запроса, параметры и т.п.).

В довесок, для явного указания htm или php в запросе:
location ~ (\.html$|\.php$) { internal; }



>Пятница, 29 июня 2018, 17:36 +03:00 от al3x < nginx-forum на forum.nginx.org >:
>
>Я уже начинаю думать, что у меня какая-то бредовая идея... еще немного и я
>откажусь от нее =)
>Не знаю как еще объяснить, но попробую...
>
>Есть файлы CMS:
>/home/admin/index.php
>/home/admin/modules/module.php
>/home/admin/template/news.html
>/home/admin/template/style.css
>
>Директория юзера:
>/home/user/ - у юзера есть доступ только к этой директории.
>
>При обращении по IP сервера nginx сначала смотрит в /home/user/ и если не
>находит там index.php, то смотрит в /home/admin/index.php и отдает его.
>
>Далее /home/admin/index.php выполняет свою работу и хочет обработать файл
>template/news.html. Nginx должен проверить, нет ли этого файла в директории
>юзера /home/user/template/news.html и если есть, то отдать его. Если этого
>файла нет, то отдать из папки /home/admin/template/news.html
>
>Затем юзер захотел создать свой личный модуль и положил его в папку
>/home/user/modules/new_module.php
>и когда /home/admin/index.php загружает модули из папки /modules/ то nginx
>должен сначала проверить все файлы в директории юзера /home/user/modules/, а
>затем здесь /home/admin/modules/ и таким образом подгрузить для PHP все
>модули из двух директорий, словно из одной.
>
>Т.е. директории должны быть как бы зеркалами друг друга.
>
>Это возможно сделать?
>
>Dmitriy Lyalyuev Wrote:
>-------------------------------------------------------
>> Может я чего не понимаю, но может стоит сделать локейшн типа
>> /user_content
>> и рут выставить ​в хомяк юзера?
>> Туда же и ФТП пусть смотрит с ограничением юзера в этом каталоге.
>> А все остальное юзеру не будет доступно от слова совсем.
>> 
>> Задача простая как 3 копейки и слабо имеет отношение к  Nginx.
>> Или я чего-то не понимаю?
>> _______________________________________________
>> nginx-ru mailing list
>>  nginx-ru на nginx.org
>>  http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
>Posted at Nginx Forum:  https://forum.nginx.org/read.php?21,280329,280339#msg-280339
>
>_______________________________________________
>nginx-ru mailing list
>nginx-ru на nginx.org
>http://mailman.nginx.org/mailman/listinfo/nginx-ru


--
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20180629/25444bf2/attachment.html>


Подробная информация о списке рассылки nginx-ru