nginx:根据远程 IP 代理 TCP 流量

nginx:根据远程 IP 代理 TCP 流量

我想使用 nginx 根据请求者的 IP 地址将 tcp 流量代理到不同的后端。到目前为止,我在 nginx.conf 中有以下设置:

stream {
    server {
        listen 1025;
        if ($remote_addr != 10.0.99.18) {
            proxy_pass mailcatcher_production:1025;
        }
        if ($remote_addr = 10.0.99.18) {
            proxy_pass mailcatcher_others:1025;
        }
    }
}

但是我在启动 nginx 时出现以下错误:

[emerg] 1#1: "if" directive is not allowed here in /etc/nginx/nginx.conf:36

我认为这并不重要,但是我在docker中运行nginx,并在启动时将nginx.conf复制到容器中。

答案1

尝试使用地图模块:

stream {
    map $remote_addr $mailcatcher {
        10.0.99.18 mailcatcher_others;
        default mailcatcher_production;
    }

    server {
        listen 1025;
        proxy_pass $mailcatcher:1025;
    }
}

相关内容