@Maksimkk

Как сохранить переменную в Nginx?

Подскажите, можно ли сделать такую систему средствами Nginx, без использования Python/PHP:
В запросе http://example.com/uuid/ping сохраняем текущее время.
В запросе http://example.com/uuid/check возвращаем последнее сохраненное значение?

Пока получился такой вариант:
location /163e065a629a40fbb1e4d6aafc29bdce/ping {
        return 200 $date_gmt;
    }

    location /163e065a629a40fbb1e4d6aafc29bdce/check {
        add_header Content-Type text/plain;
        alias /tmp/163e065a629a40fbb1e4d6aafc29bdce;
    }

Он на запрос пинг возвращает текущее время. А как сохранить переменную $date_gmt в файл /tmp/163e065a629a40fbb1e4d6aafc29bdce?
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 2
OrlovEvgenii
@OrlovEvgenii
golang developer / DevOps
- Nginx + Lua,
у lua есть такая штука как lua_shared_dict, это hashmap которая работает атомарно независимо от количества воркеров в nginx.
грубый набросок c примером, выше нужно определить lua_shared_dict стор
location /163e065a629a40fbb1e4d6aafc29bdce/ping {
        let current_date = $date_gmt
        cache:set('date', current_date, 3600)
        return 200 current_date;
    }
location /163e065a629a40fbb1e4d6aafc29bdce/check {
        add_header Content-Type text/plain;
        local last_ping = cache:get('date')
        return 200 last_ping;
    }

инфа тут - https://github.com/openresty/lua-nginx-module#ngxs...
Ответ написан
Комментировать
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
Все переменные которые могут быть использованы, живут в пределах текущего запроса, следующий запрос это уже следующий запрос.
Напишите простейший бэкенд и не нужно софту прикручивать не свойственные ему функции.

Вот вам простейший пример апи сервера которого хватит под вашу задачу https://proglib.io/p/rest-api-go/ (GOLang)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы