gpt4 book ai didi

nginx - Openshift - 内部 NGINX 代理无法连接到 Openshift 路由主机名

转载 作者:行者123 更新时间:2023-12-04 01:38:02 25 4
gpt4 key购买 nike

我的用例需要直通 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 的标准索引。 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/ 位置 block ,但它永远不会到达 app1 的 NGINX。我还确认此错误来自 app1 的路由器或服务,但我不知道如何排除故障,因为两者都没有日志。有什么想法吗?

最佳答案

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

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

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

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

参见 OpenShift docs有关网络的更多详细信息

关于nginx - Openshift - 内部 NGINX 代理无法连接到 Openshift 路由主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48710881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com