nginx能代理公网Ip非80端口吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx能代理公网Ip非80端口吗相关的知识,希望对你有一定的参考价值。

参考技术A nginx可以代理任何端口、包括tcp、udp
通常做http、https的代理,这种只要将端口号加在代理配置上即可
就如同 浏览器访问非80端口,加端口号一样

Nginx Ingress TCP代理实现

参考技术A 一般使用ingress都是代理http流量,但是有些场景希望代理tcp流量,例如:不想占用过多的公网IP。

开源的ingress对tcp支持不是很好,主要原因在于 k8s的Ingress没有给tcp留下插入点 ,可以通过ingress定义 kubectl explain ingress.spec.rules 证实。

ingress http代理简单来说,暴露一个http服务,根据host和path转发用户请求到真正的svc(用户请求带有host)。tpc代理就是暴露一堆端口号,不同的端口对应不同的后端svc。

官网 暴露TCP服务 章节,介绍可以通过 --tcp-services-configmap 暴露tcp服务,具体怎么使用没有实践之前一直不是很理解。

通过chart安装包可以获取nginx-ingress-controller deployment启动配置。

deploy脚本示例

tcp的相关配置通过configmap存储,需要注意data属性,controller会解析它。

登陆controller的Pod,直接查看nginx.conf,在最后一行,可以看到nginx代理配置。直接通过 curl localhost:8080 ,可以正常访问服务。

nginx.conf示例

整体架构可以参考
https://blog.csdn.net/shida_csdn/article/details/84032019

NGINXController有个channel,所有更新事件通过watch传到这个channel;同时channel通过queue绑定NGINXController的syncIngress,用于处理变更事件。

有关watch的初始化在store.go中实现,当key的名称为tpcconfigmap时,会触发更新。
internal/ingress/controller/store/store.go

1)在tcp configmap手动新增配置,ingress contorller svc会不会动态改变?

更多文章见: http://huiwq1990.github.io/

以上是关于nginx能代理公网Ip非80端口吗的主要内容,如果未能解决你的问题,请参考以下文章

一个公网IP,有两台或者多台web服务器,要求都使用80端口,怎么实现?

Linux系统下的80端口公网无法访问。

反向代理解决80端口数量问题

Centos 能ping通域名和公网ip但是网站不能够打开,服务器拒绝了请求。打开80端口解决。

nginx怎么禁止IP+非80端口

一台Nginx服务器反向代理多个80端口服务器