【发布时间】:2022-12-14 08:01:20
【问题描述】:
我正在尝试在 Ingress-Nginx 控制器 (helm.sh/chart=ingress-nginx-4.2.0) 中执行以下 uri 操作
如果 URI 恰好是 /,则传递 https://example.com/ -to-> https://backend_server/devportal/
但是如果 URI 匹配这个模式(/a|/b|/c),那么就转发到https://backend_server/a|b|c
看似简单的要求在 Nginx 配置中是这样工作的:
server {
listen *:443 ssl; # Listen on port 443
location / {
proxy_pass https://backend_server/devportal/;
proxy_redirect https://backend_server/devportal/ /;
# proxy_cookie_path /devportal /;
}
location ~ (/a|/b|/c) {
proxy_pass https://backend_server;
proxy_redirect https://backend_server/devportal/ /;
}
}
我无法在ingress-nginx 上复制。我尝试了以下内容:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/proxy-connect-timeout: 90s
nginx.ingress.kubernetes.io/proxy-read-timeout: 90s
nginx.ingress.kubernetes.io/proxy-redirect-from: /devportal/
nginx.ingress.kubernetes.io/proxy-redirect-to: /
nginx.ingress.kubernetes.io/proxy-send-timeout: 90s
nginx.ingress.kubernetes.io/rewrite-target: /devportal/$1
# nginx.ingress.kubernetes.io/app-root: /devportal
name: multitenancy-ingress
namespace: wso2
spec:
rules:
- host: example.com
http:
paths:
- backend:
service:
name: my-svc
port:
name: servlet-https
path: /(.*)
pathType: ImplementationSpecific
tls:
- hosts:
- example.com
secretName: my-tls
当转到https://example.com/时,后端应用程序收到/请求(GET / HTTP/1.1 302)
- 为什么重写不工作
- 我将如何满足入口对象中的两种用例
【问题讨论】:
标签: nginx nginx-ingress nginx-config