kubernetes - 入口可以将 405 重写为原始 url 并将 http-errors 405 更改为 200?
问题描述
入口可以将 405 重写为原始 url 并将 http-errors 更改405
为200
?
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: frontend-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /page/user/(.*)
pathType: Prefix
backend:
serviceName: front-user
servicePort: 80
- path: /page/manager/(.*)
pathType: Prefix
backend:
serviceName: front-admin
servicePort: 80
Ngnix可以通过方法实现访问html页面,post
但我想知道如何通过入口实现。
server {
listen 80;
# ...
error_page 405 =200 @405;
location @405 {
root /srv/http;
proxy_method GET;
proxy_pass http://static_backend;
}
}
这是一个ngnix实现通过一个post
方法来访问一个html页面的例子,405
改200
方法为get
解决方案
您可以使用服务器片段注释来实现它。
此外,我将您的入口从extensions/v1beta1
apiVersion 重写为networking.k8s.io/v1
,因为之前启动的 kubernetesv1.22
已apiVersion
被删除:
$ kubectl apply -f ingress-snippit.yaml
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
Ingress-snippet-v1.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: frontend-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/server-snippet: | # adds this block to server
error_page 405 =200 @405;
location @405 {
root /srv/http;
proxy_method GET;
proxy_pass http://static_backend; # tested with IP since I don't have this upstream
}
spec:
rules:
- http:
paths:
- path: /page/user/(.*)
pathType: Prefix
backend:
service:
name: front-user
port:
number: 80
- path: /page/manager/(.*)
pathType: Prefix
backend:
service:
name: front-admin
port:
number: 80
应用上面的清单并/etc/nginx/nginx.conf
在ingress-nginx-controller
pod 中进行验证:
$ kubectl exec -it ingress-nginx-controller-xxxxxxxxx-yyyy -n ingress-nginx -- cat /etc/nginx/nginx.conf | less
...
## start server _
server {
server_name _ ;
listen 80 default_server reuseport backlog=4096 ;
listen 443 default_server reuseport backlog=4096 ssl http2 ;
set $proxy_upstream_name "-";
ssl_certificate_by_lua_block {
certificate.call()
}
# Custom code snippet configured for host _
error_page 405 =200 @405;
location @405 {
root /srv/http;
proxy_method GET;
proxy_pass http://127.0.0.1; # IP for testing purposes
}
location ~* "^/page/manager/(.*)" {
set $namespace "default";
set $ingress_name "frontend-ingress";
set $service_name "front-admin";
set $service_port "80";
set $location_path "/page/manager/(.*)";
set $global_rate_limit_exceeding n;
...
推荐阅读
- lisp - ACT-R 块中的变量输入输出
- python - 如何更改我的 x 轴刻度以在图表中的 x 轴上显示每个日期?
- html - 如何使用 dart 按标签名称获取元素
- php - (WordPress)尝试使用高级自定义字段插件在滑块上生成动态按钮
- boolean - Boolean 没有初始化,但是,我在代码的前面初始化了它
- python - 何时以及为什么会出现 TypeError: unhashable type: 'list'?
- python - 尝试在 Spark 中导入考拉
- excel - vba get range of specific cells in a table (listobject)
- c# - 如何将 c# 中的 protobuf 消息反序列化,通过套接字读入字节数组?
- asp.net-core - IdentityServer4如何访问/connect/token请求中的参数