首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >入口nginx代理到外部URL

入口nginx代理到外部URL
EN

Stack Overflow用户
提问于 2021-08-06 21:52:21
回答 1查看 3.3K关注 0票数 3

我搜索(因为很多天.)如何使用,以便使用外部url作为后端。

是的,我在externalName中使用服务对象。我还在nginx中测试了很多指令而没有成功..。

目标很简单:

url-public-2.com)

  • I
  • 用户可以解析并加入我的公共URL (url-public.com &希望向外部后端发送请求,而不是超出我的控制范围和集群(url-ext.com) )。

我的入口可以解析url-ext.com,用户不能。当然,url-ext.com在这里有适当的证书,并公开为HTTPS ;)。诺塔:我的入口暴露了两个url,但我不认为这很重要。

我的守则:

服务:

代码语言:javascript
复制
kind: Service
apiVersion: v1
metadata:
  name: external-eip
  namespace: external-url
spec:
  type: ExternalName
  externalName: url-ext.com

入口:

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: external-eip
  namespace: external-url
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/upstream-vhost: "url-ext.com"
    nginx.ingress.kubernetes.io/configuration-snippet: |
      #      more_clear_input_headers "Host" "X-Forwarded-Host";
      more_set_input_headers 'Host: url-ext.com';
      proxy_set_header Host url-ext.com;

spec:
  rules:
  - host: url-public.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: external-eip
            port:
              number: 443
  - host: url-public-2.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: external-eip
            port:
              number: 443

结果(卷曲或浏览器访问):

代码语言:javascript
复制
<html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx</center>
</body>
</html>

和侵入日志:

代码语言:javascript
复制
2021/08/06 21:44:45 [error] 10873#10873: *2914631 upstream timed out (110: Operation timed out) while connecting to upstream, client: 10.203.65.14, server: url-public.com, request: "GET / HTTP/2.0", upstream: "https://10.203.64.5:443/", host: "url-ext.com"

10.203.64.5是url-ext.com的真正IP。

还有,curl https://10.203.64.5:443/ -k -v -H "Host: url-ext.com"工作。

不要问我“为什么使用这个注释”,我不知道:p很多谷歌搜索和许多测试.

那么,当这个externalName (可能)也在RP下时,使用externalName的正确入口配置是什么?

Nota :重写和其他重定向不工作,因为它重写用户位置,我不想要它。用户不能访问和解析url-ext.com,只有url-public.com。

比尔,谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-08-08 21:36:15

回复我自己。问题是我的侵入(以及我的所有K8S集群)都在HTTP代理下。

我已经为代理挂载了所有env变量,但似乎Ingress容器没有使用它.

因此,为了使它正常工作,我允许集群将80/443端口输出到目的地。

您只需要这样的注解:

代码语言:javascript
复制
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/upstream-vhost: "url-ext.com"

但是,如果你们中的任何人都知道如何设置我的大会来使用我的HTTP代理,我将需要它。

br

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68687814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档