我在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/;
}
答案 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,请删除ssl
,secure
,X-Forwarded-Proto
和tls
位
您可以添加更多的位置块,例如~ "^/api/(.*)"
,使其像普通的Nginx一样
它将保留域名,例如,在浏览器的地址栏中,您将拥有原始域名。如果您需要进行完全重定向,请开始尝试删除proxy_set_header Host $host;
希望能帮助到某人