Hello! On Thu, Jun 09, 2016 at 02:22:21PM +0300, Alex Domoradov wrote:
> Понял, еще один момент. А если мне надо получить такое поведение > > http://example.com/api/test.php -> /vhosts/ > example.com/public_html/api/web/test.php > > как будет более правильно реализовать такое поведение? Сейчас реализовал > через set, но что то подсказывает, что это велосипед > > location ~/api/(.*\.php$) { > set $file_path "$1"; > error_page 406 = @fastcgi-api; > return 406; > } > > location @fastcgi-api { > root /vhosts/example.com/public_html; > fastcgi_param SCRIPT_FILENAME $document_root/api/web/$file_path; > } Проще всего сделать как-то так: location ~ /api/(.*\.php)$ { alias /vhosts/example.com/public_html/api/web/$1; fastcgi_pass ... include fastcgi.conf; } (Где fastcgi.conf - стандартный конфиг из дистрибутива, устанавливающий SCRIPT_FILENAME в $document_root$fastcgi_script_name.) Или, если на самом деле любые запросы к /api/ должны смотреть в public_html/api/web/, как-то так: location /api/ { alias /vhosts/example.com/public_html/api/web/; location ~ \.php$ { fastcgi_pass ... include fastcgi.conf; } } Отмечу также, что смысла в error_page/return/именованых location'ах в конфиге как он показан - нет. Если смысл на самом деле есть - то можно и через set передать нужное. Отдельный вопрос: зачем все эти танцы, и не проще ли на файловой системе всё хранить в приличном виде, или как минимум сделать правильную структуру симлинками. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
