Nginx 入口控制器如何提供dns名称?

Nginx 入口控制器如何提供dns名称?,nginx,kubernetes,kubernetes-ingress,nginx-ingress,ngrok,Nginx,Kubernetes,Kubernetes Ingress,Nginx Ingress,Ngrok,我试图了解入口控制器在kubernetes中是如何工作的 我已经在裸机k8s集群上部署了nginx入口控制器,参见种类入口文档 localhost现在指向nginx默认页面 我部署了一个应用程序,其入口资源的主机为foo.localhost。 我现在可以在foo.localhost上访问我的应用程序 我想知道nginx是如何在不修改/etc/hosts文件的情况下做到这一点的 我还想通过相同/不同的网络从不同的机器访问我的应用程序 我用过ngrok ngrok http foo.localhos

我试图了解入口控制器在kubernetes中是如何工作的

我已经在裸机k8s集群上部署了nginx入口控制器,参见种类入口文档 localhost现在指向nginx默认页面

我部署了一个应用程序,其入口资源的主机为foo.localhost。 我现在可以在foo.localhost上访问我的应用程序

我想知道nginx是如何在不修改/etc/hosts文件的情况下做到这一点的

我还想通过相同/不同的网络从不同的机器访问我的应用程序

我用过ngrok

ngrok http foo.localhost

但它指向的是nginx默认页面,而不是我的应用程序

如果我不想使用port forward或kube proxy,如何使用ngrok访问它。

在您的计算机上,localhost和foo.localhost都解析为同一地址127.0.0.1。这已经存在了,它不是nginx或k8s所做的。这就是您无法从另一台机器访问该名称的原因,因为该名称也解析为该机器的本地主机,而不是运行k8s入口的主机。当您使用ngrok公开它时,它将使用不同的名称公开它。当您尝试使用该名称访问入口时,该请求包含一个带有ngrok URL的主机头,它与foo.localhost不同,因此入口认为该请求针对不同的域


尝试使用ngrok url在入口中公开您的本地主机。

在我的本地pc上,localhost提供来自ingress nginx的404页,foo.localhost提供app1,bar.localhost提供app2。当我通过ngrok公开localhost时,我会得到一个url x.com。我可以从x.com上的nginx访问404页面,但无法访问foo.x.com和bar.x.com上的应用程序在您的入口中,将它们公开为foo.x.com和bar.x.com