Nginx игнорирует access_by_lua_file с proxy_pass

Я использую 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?


person balamutik    schedule 12.11.2020    source источник
comment
Согласно процессу выполнения запроса Обработчик access_by_lua должен выполняться даже тогда, когда вы генерируете содержимое ответа через директиву proxy_pass, но вам лучше изменить его на rewrite_by_lua или еще лучше переписать свой код для использования через set_by_lua (последний использовал какой-то другой синтаксис, вы должны вернуть значение который должен быть назначен переменной, см. примеры).   -  person Ivan Shatsky    schedule 12.11.2020
comment
@IvanShatsky спасибо, rewrite_by_lua у меня работает.   -  person balamutik    schedule 12.11.2020


Ответы (1)


Спасибо @IvanShatsky. У меня работает Rewrite_by_lua.

person balamutik    schedule 12.11.2020