我有一个在K8s中运行的应用程序。它有3个微服务和前面的nginx。每个重定向都会首先通过nginx,并按照指定的方式进行代理。我的flask应用程序在没有端口号的情况下重定向有问题。我通过minikube在本地运行k8s。每当我重定向到另一个页面时,url不包含端口号,这会抛出一个错误。
if usernamedata == None:
print("Could not log in")
else:
if passworddata == password:
print("Logged in")
return redirect("/user/{0}".format(username))Nginx是唯一公开的服务,它的url是http://192.168.99.107:31699,我在flask中重定向,我被重定向到Nginx,这使我的连接被拒绝。如果我添加端口号并将其设置为http://192.168.99.107:31699/user/David,它可以正常工作。重定向时需要指定端口号吗?如果服务关闭并重新创建,该怎么办?另外,这是我对nginx的服务定义:
kind: Service
apiVersion: v1
metadata:
name: nginx
labels:
svc: nginx
spec:
selector:
app: nginx-app
type: LoadBalancer
ports:
- port: 80如何在flask应用程序中进行重定向?
发布于 2019-11-04 00:21:07
如果服务已关闭并重新创建,并且您希望为服务保留相同的高端口号,则需要指定nodePort并将服务类型更改为NodePort。
apiVersion: v1
kind: Service
metadata:
name: my-service
labels:
svc: nginx
spec:
type: NodePort # type is set to NodePort
ports:
- port: 80 # Service's internal cluster IP
targetPort: 80 # target port of the backing pods
nodePort: 31699 # service will be only available via this port for each cluster node if recreated
selector:
app: nginx-app在Python代码中(如果Service在Pod之前启动):
import os
...
service_host = os.environ.get("NGINX_SERVICE_HOST")
service_port = os.environ.get("NGINX_SERVICE_PORT")
...
redirect(f"http://{service_host}:{service_port}/user/{username}")https://stackoverflow.com/questions/58682020
复制相似问题