如何在kubernetes中指定Proxy Pass

时间:2019-05-03 16:22:38

标签: nginx kubernetes nginx-ingress

我在s3上拥有资产,并且我的服务已部署在kubernetes上。是否可以在nginx-ingress中定义代理传递。我目前将nginx proxy_pass资产添加到s3,并且我想在kubernetes中进行复制。

location /assets/ {
          proxy_pass https://s3.ap-south-1.amazonaws.com;
   }

我试过了,但是没用

nginx.ingress.kubernetes.io/server-snippet: |
      location /assets/ {
              proxy_pass https://s3.ap-south-1.amazonaws.com/assets/;
      }

2 个答案:

答案 0 :(得分:0)

您可以像这样尝试使用ExternalName类型的服务:

kind: Service
apiVersion: v1
metadata:
  name: s3-ap-south
spec:
  type: ExternalName
  externalName: s3.ap-south-1.amazonaws.com
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: s3-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
  rules:
  - host: YOUR_HOSTNAME
    http:
      paths:
      - backend:
          serviceName: s3-ap-south
          servicePort: 443

答案 1 :(得分:0)

您可以像常规Nginx一样在Ingress中使用proxy_pass

因此,如果您有一些位于Kubernetes集群之外的本地或公共HTTP / HTTPS服务,并且想要通过Ingress提供此服务,则只需要以下内容:

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: owncloud
  namespace: default
  annotations:
    kubernetes.io/ingress.class: nginx
    ingress.kubernetes.io/ssl-redirect: "true"
    ingress.kubernetes.io/secure-backends: "true"
    ingress.kubernetes.io/force-ssl-redirect: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/server-snippet: |
      location ~ "^/(.*)" {
        proxy_pass http://192.168.250.100:8260;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto https;
      }
spec:
  rules:
  - host: owncloud.example.com
  tls:
  - hosts:
    - owncloud.example.com
    secretName: owncloud-example-tls
  • 如果不需要HTTPS,请删除sslsecureX-Forwarded-Prototls

  • 您可以添加更多的位置块,例如~ "^/api/(.*)",使其像普通的Nginx一样

  • 它将保留域名,例如,在浏览器的地址栏中,您将拥有原始域名。如果您需要进行完全重定向,请开始尝试删除proxy_set_header Host $host;

希望能帮助到某人