我正在使用 NodeJS smtp-server 模块进行一些测试。它在任何指定端口上公开一个监听的 SMTP 服务器。SMTP 通常在端口 25 上运行,但为了以非 root 用户身份运行 Node 应用程序,我无法绑定到 1000 以下的端口。
由于我已经在这台机器上使用 nginx,我认为解决这个问题的最简单方法是将服务器内部绑定到更高的端口,例如 2500。然后使用 nginx 代理 SMTP 端口(25)并直接将流量传递到内部监听端口。
如何配置 nginx 以代理/直通端口 25 上的传入 SMTP 连接至 smtp-server 正在监听的端口? 在这种情况下,端口 25 上的传入 TCP 连接应直接转发到 localhost:2500。
请注意,smtp-server 应用程序已经处理了 SMTP 身份验证、TLS 等,因此 nginx 不应尝试执行这些操作。它应该直接让流量通过。
答案1
我想到了:
编辑 /etc/nginx/nginx.conf 文件并添加以下内容:
stream
{
server
{
listen 25;
proxy_pass 127.0.0.1:2500;
}
}