Nginx & Lua: Взломы, оптимизация и наблюдения

Установите квоту для группы на том объеме.

3
задан 9 September 2012 в 17:43
2 ответа

Ранее мы написали решение, которое динамически получает корень документа на основе указанного домена или псевдонима домена. Он использует базу данных mysql для хранения сопоставлений доменных имен и псевдонимов. Ссылка на него http://www.logicwreck.com/index.php/2012/09/11/dynamic-hosts-for-nginx-with-database-storage-of-domain-and-alias- info /
Довольно интересный способ взлома, так как он может помешать вам иметь несколько настроенных виртуальных хостов и вместо этого иметь только один.

2
ответ дан 3 December 2019 в 06:39

В моем корневом решении для документов также используется Lua, но вместо базы данных используется сценарий bash. Короче говоря, он меняет местами части домена и использует их в качестве структуры каталогов. В этой структуре каталоги с префиксом _ могут использоваться для различения корней документов от поддоменов.

например domain.com -> com / domain / _public sub.domain.com -> com / domain / sub / _public

server_name _ ~^(?<www>www\.)?(?<domain>[a-zA-Z0-9-\.]+)$;

set_by_lua $docRoot "
  local f = assert(io.popen('/path/to/conversion/script.sh '..ngx.var.domain, 'r'))
  local s = assert(f:read('*a'))
  f:close()
  return s
";

root /var/www/$docRoot/_public;

Тогда мой сценарий преобразования:

echo $1 | tr "." "\n"  | tac | tr "\n" "/" | rev | cut -b 2- | rev | tr -d "\n"

Cut удаляет дополнительную косую черту, в то время как последний tr необходим, потому что наличие новой строки в корне nginx обрезает / _public

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

1
ответ дан 3 December 2019 в 06:39

Теги

Похожие вопросы