Size: a a a

2020 May 19

ДВ

Дмитрий В in nginx_ru
Flor
Всем привет, есть вопрос к знактокам!
Возможно ли в nginx сделать следующие манипуляции?
Есть 2 статических файла (на самом деле их больше)
data.json
{ "key": "value" }

index.html
<html>[put here json content]</html>

когда юзер запрашивает index.html, nginx читает содержимое data.json и заменяет [put here json content] на прочитанные данные.
В результате, юзер получает

result.html
<html>{ "key": "value" }</html>

Я пытался заменить через ngx_http_sub_module
sub_filter '<a href="http://127.0.0.1:8080/'  '<a href="https://$host/';

http://127.0.0.1:8080/'  '<a href="https://$host/';

но не могу понять, как мне прочитать данные из json файла
порт 8080 - значит жвм крутится? так и сделай там апишку которая будет читать джейсончик и генерить страничку с ним
источник

F

Flor in nginx_ru
там немного все сложнее - не хочется еще делать доп сервис, который будет склеивать файлы. К тому же этот nginx, будет как апстрим к CDN, на котором лежит 100500 этих json файлов
SSI - мне кажется будет норм решением
У меня был вот такой прототип

return 200 '<!--# include file="/templates/header.js" -->
                    <!--# include file="/templates/$1.json" -->
                    <!--# include file="/templates/footer.js" -->';

Но хочется иметь один "файл шаблон" index.html
Я не знал что мою конструкцию из конфига можно положить в файл index.html

Сейчас пробую сделать что то типа:
return 200 "/templates/index.html"';

index.html
<html>
<!--# include file="/templates/$1.json" -->
</html>
источник

AN

Anton Noginov in nginx_ru
Что-то вы странное делаете.
Зачем вы все в return кладете?
Вы идейно хотите все держать внутри конфига nginx, без внешних файлов вообще?
источник

AN

Anton Noginov in nginx_ru
Или это телеграм сожрал форматирование так удачно.
источник

F

Flor in nginx_ru
я не знаком с nginx - по этому сейчас в поиске решений )
В прототипе все было в конфиге. но мне это не нравится. Хочу все вынести в статику, и что бы nginx брал один шаблонный файл, добавлял или заменял в нужное место данные из json файла и отдавал наружу
сделать что то вроде

nginx.config
location ~ ^/path/(.*).html {
ssi on;
return "index.html"
}

index.html
<html><!--# include file="/jsons/$1.json" --></html>

json
{ key: val }
источник

AN

Anton Noginov in nginx_ru
location ~ ^/path/(.*).html {
ssi on;
---> return "index.html"
}

return-то тут зачем?
источник

F

Flor in nginx_ru
это образно - я еще не нашел как правильно)
источник

AN

Anton Noginov in nginx_ru
Либо вы берете файл index.html с диска, тогда достаточно только ssi on;
Либо вы засовываете шаблон прямо в конфиг nginx - тогда
return 200 "<html> ... </html>";
источник

F

Flor in nginx_ru
Anton Noginov
Либо вы берете файл index.html с диска, тогда достаточно только ssi on;
Либо вы засовываете шаблон прямо в конфиг nginx - тогда
return 200 "<html> ... </html>";
а как указать где лежит шаблон?
источник

AN

Anton Noginov in nginx_ru
Директивы root / alias в конфиге виртуалхоста. Посмотрите примеры в документации.
источник

F

Flor in nginx_ru
спасибо за советы, пойду разбираться
источник

Vs

Vladislav support.od... in nginx_ru
вы злостно оффтопите
источник

GF

Gordon Freeman in nginx_ru
Vladislav support.od.ua
вы злостно оффтопите
ок, извиняюсь
источник

GF

Gordon Freeman in nginx_ru
можно чуть-чуть пооффтопить, потом удалю?
источник

GF

Gordon Freeman in nginx_ru
никому почти не сдались ipv6 в fail2ban-е, а так хоть есть шанс разобраться
источник

GF

Gordon Freeman in nginx_ru
я нашел решение, осталось только его осмыслить, правильно применить
источник

AN

Anton Noginov in nginx_ru
Никому почти не сдался fail2ban
источник

GF

Gordon Freeman in nginx_ru
Anton Noginov
Никому почти не сдался fail2ban
а что в качестве альтернативы используют?
источник

GF

Gordon Freeman in nginx_ru
причем, лучшей альтернативы
источник

AN

Anton Noginov in nginx_ru
Ничего.
Статические ACL.
источник