动态监听nginx端口



我想传递一个端口到Nginx动态侦听。所以我可以这样写:

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

,然后有一个nginx配置看起来像这样:

http {
    server {
        listen $PORT;
    }
}

并让nginx监听指定的端口。我试着用lua支持编译nginx,并写:

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;
    }
}

但这也不起作用;$sp直到rewrite阶段才被定义。

这里是否有任何选项,或者我是否在启动nginx之前通过sed或类似的方式重写配置文件?

凯文

listen指令不支持nginx变量或ENV变量。所以它不能动态地监听nginx端口。

通过ENV变量动态监听在技术上是可行的,你应该修改nginx的核心。但是它不能通过nginx变量来实现,nginx必须在接收http请求之前监听一些指定的端口。(nginx变量系统工作于HTTP请求)


你可以在启动nginx之前编写一些脚本来修改"listen"指令,这是一个不太好的实现动态侦听的方法

最新更新