gpt4 book ai didi

apache - 400 Bad Request 您正在向启用 SSL 的服务器端口 kubernetes pod 使用普通 HTTP

转载 作者:行者123 更新时间:2023-12-04 22:39:08 25 4
gpt4 key购买 nike

我收到错误“ 400 错误请求您的浏览器发送了此服务器无法理解的请求。
原因:您对启用 SSL 的服务器端口使用纯 HTTP。
请改用 HTTPS 方案访问此 URL。
"
我想要实现的是:
1. Docker 运行
使用 apache2 和 Shibboleth 的 Docker Image 分别在端口 http(8090) 和 https(8443) 上运行,并带有自签名证书。使用 docker run 在本地运行图像工作正常。
http://localhost:8090/----> 工作正常
https://localhost:8443/Shibboleth.sso/Status ----> 给出证书错误但在接受并忽略后工作正常。
(通过 apache2 000-default.conf ProxyPass/Shibboleth.sso/https://localhost:8443/Shibboleth.sso/Status 访问的 Shibboleth 服务)

  • Kubernetes平台
    下面是为访问同一个镜像而创建的部署、服务和入口。
  • apiVersion: apps/v1
    kind: Deployment
    metadata:
    namespace: test
    name: demo
    labels:
    app: demo
    spec:
    #replicas: 1
    selector:
    matchLabels:
    app: demo-pod
    template:
    metadata:
    labels:
    app: demo-pod
    spec:
    containers:
    - image: <repository>public/demo-v1
    name: demo
    ports:
    - containerPort: 8154
    name: demo-ui
    - containerPort: 8090
    name: http
    - containerPort: 8443
    name: https
    securityContext:
    runAsNonRoot: true
    runAsUser: 1000
    resources:
    limits:
    cpu: 1000m
    memory: 8024Mi
    requests:
    cpu: 500m
    memory: 4096Mi
    dnsPolicy: ClusterFirst
    imagePullSecrets:
    - name: regcred
    restartPolicy: Always
    ---
    apiVersion: v1
    kind: Service
    metadata:
    namespace: test
    name: demo-svc
    labels:
    app: demo
    spec:
    selector:
    app: demo-pod
    ports:
    - port: 8154
    name: demo-ui
    targetPort: 8154
    protocol: TCP
    - port: 8090
    name: http
    targetPort: 8090
    protocol: TCP
    - port: 8443
    name: https
    targetPort: 8443
    protocol: TCP
    ---
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    namespace: test
    name: demo-ing
    labels:
    app: demo
    spec:
    ingressClassName: internal
    tls:
    - hosts:
    - demo.example.com
    rules:
    - host: demo.example.com
    http:
    paths:
    - path: /
    pathType: Prefix
    backend:
    service:
    name: demo-svc
    port:
    number: 8090
    - path: /demo-ui
    pathType: Prefix
    backend:
    service:
    name: demo-svc
    port:
    number: 8090
    - path: /Shibboleth.sso
    pathType: Prefix
    backend:
    service:
    name: demo-svc
    port:
    number: 8443
    默认域使用 *.example.com 的 https
    when hitting **https://demo.example.com/ --> http://<pod-IP>:8090**  and working fine 
    but when accessing the **https://demo.example.com/Shibboleth.sso/Status --- > http://<pod-IP>:8443**
    并返回“ 400 Bad Request 您的浏览器发送了此服务器无法理解的请求。原因:您正在向启用 SSL 的服务器端口发送普通 HTTP。请使用 HTTPS 方案访问此 URL,请
    我也通过入口注释和 apache2 重定向尝试了多种解决方案,但似乎没有任何帮助。
    在 apache2 上进行重定向时,它不会将 localhost 作为变量。
     RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^8443$
    RewriteRule ^/Shibboleth.sso(.*) https://localhost:8443/Shibboleth.sso/$1 [NC,R,L]

    不考虑localhost并作为dns。
    还尝试在入口级别重定向,这也给出了 404 not found 错误。
    请在这里帮忙!!!

    最佳答案

    您能否尝试将此注释添加到您的入口文件中?

    annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    nginx.ingress.kubernetes.io/secure-backends: "true"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"

    关于apache - 400 Bad Request 您正在向启用 SSL 的服务器端口 kubernetes pod 使用普通 HTTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67151948/

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