Рейтинг:0

Несколько вложенных HTML-директив включают в себя сервер nginx

флаг us

У меня есть index.html:

<!--#include virtual="/includes/Framework.inc"-->

Внутри Framework.inc у меня есть:

<!--#include file="/includes/HTML.inc"-->

Однако, когда я открываю страницу для index.html, после просмотра исходного кода я вижу, что вложенного включения не произошло, и вижу полную директиву включения:

<!--#include file="/includes/HTML.inc"-->

Как мы можем убедиться, что nginx поддерживает несколько уровней включения HTML?

Рейтинг:2
флаг gr

Nginx делает поддержка вложенных SSI включает. Однако модуль SSI обрабатывает только текст/html Содержимое типа MIME по умолчанию, а ваш .inc файлы, скорее всего, возвращаются с чем-то еще в Тип содержимого HTTP-заголовок ответа. Вы можете настроить свои глобальные типы MIME, чтобы включить .inc расширение или указать дополнительные типы MIME для обработки с помощью ssi_types директива, однако я предпочел бы определить дополнительное место для /включает в себя/ содержимое каталога:

расположение /включает/ {
    внутренний;
    вкл.;
    типы {
        текст/html html htm вкл;
    }
}
MightyMouse avatar
флаг us
Здравствуйте Иван. У меня есть дополнительный вопрос по этому поводу. Можем ли мы сделать SSI для файлов PHP? Последний node/include пытается включить test.php, который содержит . Но все, что мы видим в исходном коде, — это содержимое test.php. Я пытался настроить типы: ssi on; типы { текст/html html htm вкл php; }
Ivan Shatsky avatar
флаг gr
Вы не ограничены статическим содержимым, SSI можно применять к любому местоположению, даже к тем, которые имеют обработчики содержимого HTTP `proxy_pass` или FCGI `fastcgi_pass`. Однако, если вы хотите включить контент из этих местоположений, вы должны сделать это с помощью «виртуального» подзапроса, и (очевидно) для этих местоположений должен быть включен SSI.
MightyMouse avatar
флаг us
о-ля-ля, появились новые темы. лол, виртуальный подзапрос, а?.. интересный монстр, что бы это ни было...
Ivan Shatsky avatar
флаг gr
Это статическое включение файла (с использованием имени файла): ``. Это включение ответа на подзапрос (с использованием URI): ``. Подзапросы — это внутренняя функция nginx, широко используемая несколькими модулями (наиболее известным примером может быть `auth_request_module`); тот же внутренний API nginx используется «виртуальными» включениями SSI. `/test.php` — это URI, который должен пройти через расположение обработчика PHP по умолчанию (обычно что-то вроде `location ~ \.php$ { ... }`) для интерпретации через PHP-FPM.
MightyMouse avatar
флаг us
Гений! Вау, это сработало. Включение файла PHP внутри виртуального каталога не работает и извлекает содержимое файла PHP. Я сделал это, что может быть излишним: location /includes/ { псевдоним "Z:/Виртуальные папки/Включает/"; вкл.; типы { текст/html html htm вкл php; } расположение ~ \.php$ { вкл.; типы { текст/html html htm вкл php; } fastcgi_param SCRIPT_FILENAME $request_filename; } }

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.