Nginx四层转发配置

默认分类 · 2024-08-23

带鉴权的端口转发可以用Frp做,但Frp最少需要一个服务端和一个客户端,部署麻烦,这次做的端口转发不需要鉴权,直接用Nginx来做了,记一下方便以后抄

用的镜像是这个:

nginx:1.25.2-alpine-slim

需要两个配置文件:
一个是/etc/nginx/nginx.conf

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
      worker_connections  1024;
}

include /etc/nginx/conf.d/portforward.conf;

因为不提供http服务,相关的配置全删掉,/etc/nginx/conf.d下默认会带一个default.conf,懒得再写文件覆盖它了,在上面的include中指定单个文件了

另一个是/etc/nginx/conf.d/portforward.conf

      stream {
              upstream forward {
                      server target.domain:port;
              }

              server {
                      listen 80;
                      proxy_pass forward;
              }
      }

stream->upstream->server可以写域名,也可以写ip
在k8s里以Daemonset方式部署时,创建一个NodePort类型的Service暴露端口,还需要给Service的externalTrafficPolicy设置成Local,让主机端口进来的流量只路由到本机上的pod,避免流量被k8s转发给别的节点上的pod,导致客户端请求的ip与被代理的服务端看到的ip不一致

Theme Jasmine by Kent Liao