我正在努力克服从HTTP到HTTPS重定向流量的ingress-gce限制。
因此,最简单的配置应该是Apache2的反向代理,但不适用于我,这个apache是在我的kubernetes集群之外的另一个VM中,我只想“代理”流量,以便我可以处理请求,重定向到https等
我需要此特定的解决方案才能正常工作,因为我目前无法配置nginx入口,必须使用此GCE入口完成
我的 ingress yaml配置是:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: my-reserved-address
kubernetes.io/ingress.allow-http: "false"
spec:
tls:
- hosts:
- mycustom.domain.com
secretName: mydomain-com-certificate
rules:
- host: mycustom.domain.com
http:
paths:
- path: /*
backend:
serviceName: tomcat-service
servicePort: 80
- path: /app/*
backend:
serviceName: spring-boot-app-service
servicePort: 80
我的 apache 虚拟主机配置是:
<VirtualHost *:80>
ServerName myother.domain.com
Redirect permanent / https://myother.domain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName myother.domain.com
ProxyPreserveHost On
ProxyRequests On
ProxyPass / https://mycustom.domain.com/
ProxyPassReverse / https://mycustom.domain.com/
SSLEngine on
SSLProxyEngine on
SSLProtocol All -SSLv2 -SSLv3
SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:!RC4:+HIGH:+MEDIUM
SSLCertificateKeyFile /etc/ssl/domain.com/domain.com-privatekey-nopass.pem
SSLCertificateFile /etc/ssl/domain.com/domain.com.crt
SSLCACertificateFile /etc/ssl/domain.com/IntermediateCA.crt
</VirtualHost>
每个谜题都能按预期独立运行,我的意思是,如果我遵循以下任一条件
A) https://mycustom.domain.com/tomcat_context
B) https://mycustom.domain.com/app/hello
我得到了预期的结果,A)我的网页得到了,B)我的应用程序得到了一个简单的答复
但是,当我使用代理 http://myother.domain.com/tomcat_context 时,我可以看到它是如何转换为 的,但是我总是从集群得到TEXT响应,始终是< / p>
default backend - 404
我也在检查Apache2日志,我可以看到apache在内部如何进行正确的调用
[Wed May 22 18:39:40.757619 2019] [proxy:debug] [pid 14196:tid 140335314564864] proxy_util.c(2213): [client xxx.xxx.xxx.xxx:52636] AH00944: connecting https://mycustom.domain.com/tomcat_context to mycustom.domain.com:443
如果所有部分都能正常工作,我找不到解释为什么会发生这种情况,最终,我的ingress-gce就像我的Apache代理的外部服务一样,应该已经在工作了。
配置,入口和apache都配置了SSL,并且它们都具有相同的完全相同的证书
任何帮助将不胜感激
答案 0 :(得分:2)
入口控制器没有myother.domain.com
的处理程序,因此会生成404。
您需要为myother.domain.com
设置一个额外的Ingress主机,或者打开ProxyPreserveHost Off
,以便代理从mycustom.domain.com
配置中发送ProxyPass
主机名。
tomcat应用程序如何利用Host
标头通常是决定您需要通过代理映射标头的方式的决定者。