我在vuejs中为我的前端做了一个nginx入口。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: vuejs-ingress
namespace: default
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /(.*)
pathType: Prefix
backend:
service:
name: vuejs-service
port:
number: 80
tls:
- hosts:
- example.com
secretName: ingress-cert-vuejs
字符串
当我请求example.com/login时,我得到了一个404未找到。我想,我已经正确设置了我的入口。下面是我的入口的描述:
Name: vuejs-ingress
Labels: app.kubernetes.io/instance=vuejs
Namespace: default
Address: 192.168.1.24
Ingress Class: nginx
Default backend: <default>
TLS:
ingress-cert-vuejs terminates example.com
Rules:
Host Path Backends
---- ---- --------
timemanagement.raveleau.net
/(.*) vuejs-service:80 (10.244.3.98:80)
Annotations: cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/from-to-www-redirect: true
nginx.ingress.kubernetes.io/rewrite-target: /$1
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Sync 3m7s (x2 over 3m41s) nginx-ingress-controller Scheduled for sync
型
感谢你的帮助.
2条答案
按热度按时间oewdyzsn1#
nginx.ingress.kubernetes.io/rewrite-target: /$1
注解会重写要传递到您的后端服务的URL路径。请确保您的应用(由vuejs-service
提供服务)正确处理这些重写的路径。如果您的应用需要完整路径(如/login
),则重写可能会导致问题。请尝试删除rewrite-target注解以将完整路径传递到您的应用。检查路由器模式。如果您在历史模式下使用Vue Router,则需要将服务器配置为使用
index.html
文件响应所有路径。请确保您的应用已为此设置,并且后端服务器(vuejs-service
)已相应配置。au9on6nz2#
所以经过一番研究,我找到了解决方案。我需要创建一个nginx conf并将其添加到我的docker容器中。
字符串