2016-09-12 8 views
0

Ich möchte einen Port an Nginx übergeben, um dynamisch zu hören. So kann ich so etwas wie schreiben:Dynamisch auf einen Nginx-Port hören

PORT=4567 nginx -c $PWD/nginx.conf 

und haben dann eine nginx Konfiguration, die so etwas wie folgt aussieht:

http { 
    server { 
     listen $PORT; 
    } 
} 

und haben nginx auf dem angegebenen Port hören. Ich versuchte, nginx mit lua Unterstützung zu kompilieren und zu schreiben:

events { 
    worker_connections 200; 
} 

env SERVER_PORT; 

http { 
    server { 
     set_by_lua_block $sp { 
      return os.getenv("SERVER_PORT"); 
     } 
     listen $sp; 
     root /Users/kevin/code/nginx-testing; 
    } 
} 

Aber das funktioniert nicht, entweder; $sp wird erst in der rewrite Phase definiert.

Gibt es irgendwelche Optionen hier oder bin ich resigniert, um die Konfigurationsdatei über sed o.ä. neu zu schreiben, bevor nginx gestartet wird?

Kevin

+0

Vielleicht: PORT = 1234 \ nexport PORT – Deep

Antwort

2

The listen directive nicht nginx Variable oder ENV-Variable unterstützen. So kann es nicht auf einem Nginx-Port dynamisch abhören.

Dynamisch hören über ENV-Variable ist technisch machbar, sollten Sie nginx Kern ändern.
Aber es kann nicht über Nginx Variable implementiert werden, Nginx muss auf bestimmten Port vor dem Empfang von HTTP-Anforderungen zu hören. (nginx variables System arbeitet auf HTTP-Anfrage.)


Sie ein Skript schreiben können „hören“ Richtlinie vor dem Start nginx zu ändern, das ist eine nicht so gute Art und Weise dynamisch zu implementieren hören.