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端口吗的主要内容,如果未能解决你的问题,请参考以下文章