Fetching HTTP value into config at start-up

oscaretu . oscaretu at gmail.com
Thu Sep 4 06:37:10 UTC 2014


Hello, igorclark

Perhahs you can create a shell to launch nginx, and before that, ejecute a
shell to assign a environment variable as a result of the execution of a
program, or create (update) a file that is to be included from nginx config
file when starting

Some ideas:

http://nginx.2469901.n2.nabble.com/Want-to-access-UNIX-environment-variable-td7584005.html
https://www.google.com/search?client=ubuntu&channel=fs&q=get+environment+variable+from+nginx&ie=utf-8&oe=utf-8

Greetings,

Oscar


On Thu, Sep 4, 2014 at 7:07 AM, igorclark <nginx-forum at nginx.us> wrote:

> Hi all,
>
> I want to read some remote values via HTTP into nginx config variables,
> just
> once at nginx startup / reload time, and pass them as fastcgi_params into
> PHP scripts. I control the remote system, so I'll know if it needs to
> re-read and can send a HUP to nginx. I don't need it to happen every
> request
> though, because the value won't change for long periods - but it will
> change
> sometimes, and I don't want to have push more config out to multiple nginx
> servers if I can avoid it.
>
> Is there a way to do this that doesn't create problems?
>
> Here's what I've tried so far.
>
> This first one doesn't work, because the "API [is] disabled in the context
> of set_by_lua*":
>
>     set_by_lua $config_variable "
>         local result = ngx.location.capture('http://url.to.fetch/')
>         return result
>     "
>
> (Same with ngx.socket.*)
>
> This next one works; it feels horrible to do this but if it was just once
> at
> start-up, it might be OK - but this executes for every incoming request
> (confirmed by using /bin/date as the 'command' and just hitting refresh):
>
>     set_by_lua $config_variable "
>         local command = "/usr/bin/curl http://url.to.fetch/"
>         local handle = io.popen(command)
>         local result = handle:read("*a")
>         handle:close()
>         return result
>     "
>
> Same for this one, it executes for every request:
>
>     perl_set $config_variable '
>         sub {
>             $var = `/bin/date`;
>             return $var;
>         }
>     '
>
> Is there a good way to do this, that only executes once, and doesn't have
> horrible shell interactions?
>
> Thanks very much for your help,
> Igor
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?2,253063,253063#msg-253063
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
>



-- 
Oscar Fernandez Sierra
oscaretu at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20140904/26c974ec/attachment.html>


More information about the nginx mailing list