Nginx配置邮件代理转发

2024-05-20  本文已影响0人  moutory

前言

由于笔者的工作环境是内网环境,无法随意访问外网的服务,对于涉及外部服务的接口一般会通过一台专用的服务器来进行转发,由于nginx天然支持httphttps协议的转发,所以用nginx做代理转发起来也没有难度。最近接触到需要访问外部系统的邮件服务器,由于邮件服务是用的smtp协议,所以无法直接使用nginx的http模块进行代理,后面查询资料后发现nginx可以通过自定义安装stream模块来转发tcp/udp协议的请求。而smtp协议是包含在tcp协议内的,自然也可以进行转发。
本文将对如何使用nginx的stream模块完成转发来进行介绍,希望对各位读者有所帮助。

一、安装stream模块

(一)检查是否需要安装stream模块

默认情况下,nignx是没有附带stream模块的,不过在安装之前还是可以先通过/$nginx_home/sbin/nignx -V命令来检查一下是否已安装了这个模块。如果响应的结果中有--with-stream 参数,就说明当前的nginx有安装这个模块

[root@xxx nginx]$ ./sbin/nginx -V
nginx version: nginx/1.24.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) 
built with OpenSSL 3.0.13 30 Jan 2024
TLS SNI support enabled
configure arguments: --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module --with-ipv6 --with-pcre=../pcre-8.45 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-3.0.13 --with-stream

PS:stream模块是从nginx从1.9.0版本才开始有的,如果本身nginx版本就比1.9.0版本低的话,建议先整体升级一下nginx

(二)安装stream模块
 ./configure --prefix=/opt/nginx   ./configure --prefix=/opt/nginx  --with-http_stub_status_module --with-http_ssl_module --with-ipv6 --with-pcre=../pcre-8.45 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-3.0.13 --with-stream
make -j16

注意,我们只希望新增nignx功能模块,并不是重新安装nginx,所以这里并不需要执行make install命令,然后 -j 16只是开启多核编译,加快编译速度,不是必填参数。

二、配置nginx

在nginx.conf文件中,新增stream模块,其实这里更建议单独抽一份stream的配置文件出来,再通过include的方式导入到nignx.conf文件中,便于后续管理。
需要注意的是, stream模块和http模块同级,记得不要把它配置在http模块里面了

stream {
  server {
        # 本机监听端口 9000 
        listen        9000;
        proxy_pass    xxx.org.cn:25;
   }
}

三、重启nignx即可生效

/sbin/nginx -s reload

说在后面

其实除了nginx转发外,通过iptable来转发也是一种可行的方案,不过个人感觉不如nginx直观,就没采用这种方案。

上一篇 下一篇

猜你喜欢

热点阅读