Я использую OpenResty в своем проекте и столкнулся с проблемой, что nginx игнорирует access_by_lua_file при использовании прокси-пропуска. Вот мой код местоположения:
location /getapi {
internal;
set $apiauth '';
set $api_host '';
access_by_lua_file /usr/local/openresty/nginx/conf/lua/getapi.lua;
proxy_redirect default;
proxy_pass $api_host;
proxy_ssl_certificate "/usr/local/openresty/nginx/conf/cert.pem"
certificate_key "cert.key";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Authorization $apiauth;
}
Я называю это место с помощью ngx.location.capture
. В файле lua я определяю переменные apiauth
и api_host
. Но содержимое файла lua никогда не выполняется, nginx просто игнорирует его. И никаких ошибок в error.log. Единственное, что я пытаюсь ПОЛУЧИТЬ пустой URL. Как я могу заставить nginx выполнить содержимое access_by_lua_file
?
access_by_lua
должен выполняться даже тогда, когда вы генерируете содержимое ответа через директивуproxy_pass
, но вам лучше изменить его наrewrite_by_lua
или еще лучше переписать свой код для использования черезset_by_lua
(последний использовал какой-то другой синтаксис, вы должны вернуть значение который должен быть назначен переменной, см. примеры). - person Ivan Shatsky   schedule 12.11.2020rewrite_by_lua
у меня работает. - person balamutik   schedule 12.11.2020