【问题标题】:Openshift - Internal NGINX proxy can't connect to Openshift route hostnameOpenshift - 内部 NGINX 代理无法连接到 Openshift 路由主机名
【发布时间】:2018-02-09 17:12:15
【问题描述】:

我的用例需要直通 SSL,因此我们不能在 Openshift 中原生使用基于路径的路由。我们的下一个最佳解决方案是设置一个内部 NGINX 代理,将流量从一个路径路由到另一个 Web UI 的 Openshift 路由。这样做时我遇到了错误。

这是我简化的 NGINX 配置:

    worker_processes auto;                                          
    error_log /var/log/nginx/error.log;
    pid /etc/nginx/nginx.pid;                                                                                                                                                                    

    include /usr/share/nginx/modules/*.conf;                                                                                                                                                                                     
    events {                                            
        worker_connections  1024;                                                                         
    }                                                                                                                                                                                       
    http {                                                                   
        upstream app1-ui-1-0 {                         
            server app1-1-0.192.168.99.100.nip.io:443;                                                         
        }                                                               

        server {                                                               
          listen 8443 ssl default_server;                               

          location /apps/app1/ {                                                           
              proxy_pass https://app1-ui-1-0/;                                             
          }                                                                           
        }                                                                      
    }  

我的app1路由配置如下:

    apiVersion: v1
    kind: Route
    metadata:
      name: app1-1-0
    spec:
      host: app1-1-0.192.168.99.100.nip.io
      to:
        kind: Service
        name: app1-1-0
      tls:
        insecureEdgeTerminationPolicy: Redirect
        termination: passthrough
  • 当我点击https://app1-1-0.192.168.99.100.nip.io 时,应用程序运行良好。

  • 当我点击 NGINX 代理路由 url (https://proxier-1-0.192.168.99.100.nip.io) 时,它会正确加载 nginx 的标准 index.html 位置。

  • 但是,当我尝试通过代理通过 https://proxier-1-0.192.168.99.100.nip.io/apps/apps1/ 访问 app1 时,我收到以下 Openshift 错误:

    Application is not available
    
    The application is currently not serving requests at this endpoint. It may not have been started or is still starting.
    

通过日志和测试,我知道请求正在进入/apps/app1/ 位置块,但它永远不会到达 app1 的 NGINX。我还确认此错误来自 app1 的路由器或服务,但我不知道如何排除故障,因为两者都没有日志。有什么想法吗?

【问题讨论】:

  • 为什么使用路由而不是内部dns?
  • 是的,你是个天才。我删除了路由并直接通过内部 DNS 引用了该服务,它运行良好。谢谢!
  • 很高兴它有帮助,发布更详细的解释,以防其他人点击此
  • 我遇到了同样的问题,但我不知道我可以使用下面发布的解决方案,因为我的 Nginx 服务器位于一个 Openshfit 集群中,而代理服务器位于另一个集群中。是否有使用 TLS 直通路由的解决方案?

标签: nginx proxy routes openshift


【解决方案1】:

当您想向在同一个 OpenShift 集群中运行的其他应用程序发出请求时,大多数情况下正确的解决方案是使用内部 DNS。

OpenShift 附带一个 SDN,可以在 Pod 之间进行通信。这比通过其路由与另一个 Pod 通信更有效,因为这通常会在请求再次到达 OpenShift 路由器并在此时通过 SDN 转发之前将请求路由回公共互联网。

可以通过<service>.<pod_namespace>.svc.cluster.local 访问服务,在您的情况下,这使NGINX 能够通过server apps1-1-0.myproject.svc.cluster.local 进行代理

路由通常用于将外部流量路由到集群中。

有关网络的更多详细信息,请参阅OpenShift docs

【讨论】:

  • 我在原帖中遇到了同样的问题,但我不知道我可以使用这个解决方案,因为我的 Nginx 服务器位于一个 Openshfit 集群中,而代理服务器位于其他。有没有使用 https 路由的解决方案?
【解决方案2】:

根据上面的评论,我最终放弃了路由并在 NGINX 的上游引用了服务的内部 DNS:

upstream finder-ui-1-0 {                                                                                                                                                                 
    server apps1-1-0.myproject.svc.cluster.local:443;                                                                                                                                
}             

这很好地满足了我的需求并且效果很好。

【讨论】:

    猜你喜欢
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多