Kubernetes入口未重定向到正确路径
我有一个Django应用程序,作为部署运行在Kubernetes集群内的Apache上。应用程序正在端口8080上运行,应用程序根目录为“/”。当有人输入/tascaty时,我希望我的入口重定向到我的应用程序,但当我在入口资源中以/tascaty的身份输入路径时,这不会发生。但当我设置路径时,它会工作。下面是我的应用程序的详细信息 应用程序的Apache配置文件:Kubernetes入口未重定向到正确路径,kubernetes,kubernetes-ingress,nginx-ingress,Kubernetes,Kubernetes Ingress,Nginx Ingress,我有一个Django应用程序,作为部署运行在Kubernetes集群内的Apache上。应用程序正在端口8080上运行,应用程序根目录为“/”。当有人输入/tascaty时,我希望我的入口重定向到我的应用程序,但当我在入口资源中以/tascaty的身份输入路径时,这不会发生。但当我设置路径时,它会工作。下面是我的应用程序的详细信息 应用程序的Apache配置文件: 听8080 WSGIDaemonProcess tascaty_dev python path=/usr/local/lib/pyt
听8080
WSGIDaemonProcess tascaty_dev python path=/usr/local/lib/python3.8/dist-packages
WSGIProcessGroup tascaty_dev
WSGIApplicationGroup%{GLOBAL}
WSGIScriptAlias//usr/local/lib/python3.8/dist-packages/tascaty_project/wsgi.py
要求所有授权
别名/static/usr/local/lib/python3.8/dist-packages/static
要求所有授权
应用程序部署:
apiVersion:apps/v1
种类:部署
元数据:
名称:tascatyk8s部署
名称空间:tascaty
规格:
副本:1份
选择器:
火柴标签:
组件:tascatyk8s
模板:
元数据:
标签:
组件:tascatyk8s
规格:
卷数:
-名称:tascatyk8s mount
persistentVolumeClaim:
索赔名称:tascatyk8s pvc
容器:
-名称:tascatyk8s
图片:abdul8423/tascatyk8s:v3
端口:
-集装箱港口:8080
体积数量:
-mountPath:/usr/local/lib/python3.8/dist-packages/users/migrations
名称:tascatyk8s mount
子路径:用户
-挂载路径:/usr/local/lib/python3.8/dist-packages/tascaty/migrations
名称:tascatyk8s mount
子路径:塔斯卡蒂
-mountPath:/usr/local/lib/python3.8/dist-packages/leaves/migrations
名称:tascatyk8s mount
子路径:树叶
-mountPath:/usr/local/lib/python3.8/dist-packages/blog/migrations
名称:tascatyk8s mount
子路径:博客
环境:
-姓名:TASCATY_主机
价值来源:
configMapKeyRef:
名称:tascatyk8s部门配置图
关键字:TASCATY_主机
-名称:塔斯卡蒂港
价值来源:
configMapKeyRef:
名称:tascatyk8s部门配置图
密钥:TASCATY_端口
-姓名:TASCATY_DB
价值来源:
configMapKeyRef:
名称:tascatyk8s部门配置图
关键字:TASCATY_DB
-姓名:TASCATY_用户
价值来源:
configMapKeyRef:
名称:tascatyk8s部门配置图
关键字:TASCATY_用户
-名称:塔斯卡蒂沟
价值来源:
secretKeyRef:
姓名:塔斯卡蒂秘密
密钥:MYSQL\u密码
节点选择器:
组成部分:塔斯卡蒂
应用程序服务
apiVersion:v1
种类:服务
元数据:
名称:tascatyk8s群集ip服务
名称空间:tascaty
规格:
类型:集群
选择器:
组件:tascatyk8s
端口:
-端口:8080
目标港:8080
入口控制器的安装使用
kubectl应用-fhttps://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.34.1/deploy/static/provider/baremetal/deploy.yaml
入口资源:
apiVersion:networking.k8s.io/v1beta1
种类:入口
元数据:
名称:tascatyk8s部署入口
名称空间:tascaty
注释:
kubernetes.io/ingres.class:nginx
nginx.ingres.kubernetes.io/rewrite-target:/
规格:
规则:
-http:
路径:
-路径:/tascaty
后端:
服务名称:tascatyk8s群集ip服务
服务端口:8080
当我尝试访问时,它会重定向到
但是我得到一个404找不到
但是,当我用/而不是/tascaty替换入口资源内的路径时,它工作正常。入口路径发生了什么情况/tascaty
:
您的Apache/WSGI服务器正在执行重定向。重定向到/
后,客户端返回入口,入口不知道如何处理,因此它将显示404
入口路径发生了什么情况/
:
您的Apache/WSGI服务器正在执行重定向。重定向到/
后,客户端返回入口,入口知道如何处理/
,一切都很好
因此,您的入口(运行nginx)和Apache都需要始终在同一条路径上达成一致。因此,您要么在入口上使用/
,要么将Apache配置更改为也在/tascaty
上服务,这样它就不会重定向到/
,而是重定向到/tascaty
后者的例子:
听8080
WSGIDaemonProcess tascaty_dev python path=/usr/local/lib/python3.8/dist-packages
WSGIProcessGroup tascaty_dev
WSGIApplicationGroup%{GLOBAL}
WSGIScriptAlias/tascaty/usr/local/lib/python3.8/dist-packages/tascaty_project/wsgi.py
要求所有授权
别名/tascaty/static/usr/local/lib/python3.8/dist-packages/static
要求所有授权
此外,您需要从入口清单中删除此项:
nginx.ingres.kubernetes.io/rewrite-target:/
✌️ 感谢Rico,它在进行更改后工作正常,但页面显示不正确。如果您使用的是
/tascaty
,则可能需要在apache+ingress co中为/tascaty/
和/tascaty
添加节