进入外部网站的 Nginx 代理(Webflow 托管)

And*_*par 1 nginx kubernetes amazon-eks nginx-ingress

我有一个 EKS 集群,以及一个基于 Webflow 构建(并托管)的单独网站。

集群在后面cluster.com,网站在后面website.webflow.io

我想实现的是代理cluster.com/website请求website.webflow.io

根据我的研究,这个问题可以通过ExternalName 服务来解决。不幸的是,它没有为我解决这个问题,它正在尝试在集群内进行 DNS 查找。我还尝试了端点的各种其他配置。在我尝试过的所有内容中,ExternalName 似乎是最有前途的,这就是我附加下面的配置的原因。

我的配置如下:

---
kind: Service
apiVersion: v1
metadata:
  namespace: development
  name: external-service
spec:
  type: ExternalName
  externalName: website.webflow.io
  ports:
    - port: 443
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: development
  name: external-ingress
  annotations:
    ingress.kubernetes.io/preserve-host: "false"
    ingress.kubernetes.io/secure-backends: "true"
    ingress.kubernetes.io/upstream-vhost: "website.webflow.io"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/server-snippet: |
      proxy_ssl_name website.webflow.io;
      proxy_ssl_server_name on;
spec:
  rules:
  - host: cluster.com
    http:
      paths:
      - path: /website
        backend:
          serviceName: external-service
          servicePort: 443

Run Code Online (Sandbox Code Playgroud)

有没有直接的方法来实现这一目标?配置中有哪些突出的错误?

Mat*_*att 6

这就是我所做的。

我应用了您的配置,但更改了以下注释名称:

ingress.kubernetes.io/upstream-vhost: "website.webflow.io"
Run Code Online (Sandbox Code Playgroud)

我在nginx 入口文档中找到的一个:

nginx.ingress.kubernetes.io/upstream-vhost: "website.webflow.io"
^^^^^^
Run Code Online (Sandbox Code Playgroud)

尝试一下,如果解决了请告诉我。

编辑:这是我使用的完整 yaml:

---
kind: Service
apiVersion: v1
metadata:
  name: external-service
spec:
  type: ExternalName
  externalName: website.webflow.io
  ports:
    - port: 443

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: external-ingress
  annotations:
    ingress.kubernetes.io/preserve-host: "false"
    ingress.kubernetes.io/secure-backends: "true"
    nginx.ingress.kubernetes.io/upstream-vhost: "website.webflow.io"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/server-snippet: |
      proxy_ssl_name website.webflow.io;
      proxy_ssl_server_name on;
spec:
  rules:
  - host: cluster.com
    http:
      paths:
      - path: /website
        backend:
          serviceName: external-service
          servicePort: 443
Run Code Online (Sandbox Code Playgroud)

  • 您给我的完整配置无需 Endpoints 对象即可工作。谢谢您,好先生,您是一位绅士,一位学者。 (2认同)