我想使用 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;
}
}