Openshift-内部NGINX代理可以';无法连接到Openshift路由主机名
我的用例需要通过SSL,所以不幸的是,我们不能在Openshift中本机使用基于路径的路由。我们的下一个最佳解决方案是设置一个内部NGINX代理,将流量从一个路径路由到另一个webui的Openshift路径。这样做时我会出错 这是我简化的NGINX配置:Openshift-内部NGINX代理可以';无法连接到Openshift路由主机名,nginx,proxy,routes,openshift,Nginx,Proxy,Routes,Openshift,我的用例需要通过SSL,所以不幸的是,我们不能在Openshift中本机使用基于路径的路由。我们的下一个最佳解决方案是设置一个内部NGINX代理,将流量从一个路径路由到另一个webui的Openshift路径。这样做时我会出错 这是我简化的NGINX配置: worker_processes auto; error_log /var/log/nginx/error.log; pid /etc
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(
),它会正确加载nginx的标准index.html位置https://proxier-1-0.192.168.99.100.nip.io
- 但是,当我试图通过代理通过
,我得到以下Openshift错误:https://proxier-1-0.192.168.99.100.nip.io/apps/apps1/
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的路由器或服务,但我不知道如何排除故障,因为两者都没有日志。有什么想法吗?根据上面的评论,我最终放弃了路由,并在NGINX的上游引用了服务的内部DNS:
upstream finder-ui-1-0 {
server apps1-1-0.myproject.svc.cluster.local:443;
}
这很好地满足了我的需要,并且运行得很好。当您想要向运行在同一OpenShift集群中的其他应用程序发出请求时,在大多数情况下,正确的解决方案是使用内部DNS OpenShift附带SDN,可实现POD之间的通信。这比通过其路由与另一个Pod通信更有效,因为这通常会在请求再次命中OpenShift路由器之前将其路由回公共互联网,并在该点通过SDN转发 可以访问服务
.svc.cluster.local
,在您的情况下,它使NGINX能够通过服务器apps1-1-0.myproject.svc.cluster.local进行代理
路由通常用于将外部流量路由到集群中
有关网络的更多详细信息,请参见为什么使用路由而不是内部dns?是的,你是个天才。我放弃了路由,直接通过内部DNS引用了该服务,它工作得很好。谢谢很高兴它起到了作用,发布了更详细的解释,以防其他人点击。我也有同样的问题,但我不知道我可以使用下面发布的解决方案,因为我的Nginx服务器位于一个Openshfit集群中,而代理服务器位于另一个集群中。有没有使用TLS直通路由的解决方案?我在原始帖子中有同样的问题,但我不知道我可以使用这个解决方案,因为我的Nginx服务器位于一个Openshfit集群中,而代理服务器位于另一个集群中。是否有一种解决方案使用https路由?