nginx ingress rewrite target

cngwdvgl  于 2023-11-17  发布在  Nginx
关注(0)|答案(2)|浏览(181)

我在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


感谢你的帮助.

oewdyzsn

oewdyzsn1#

nginx.ingress.kubernetes.io/rewrite-target: /$1注解会重写要传递到您的后端服务的URL路径。请确保您的应用(由vuejs-service提供服务)正确处理这些重写的路径。如果您的应用需要完整路径(如/login),则重写可能会导致问题。请尝试删除rewrite-target注解以将完整路径传递到您的应用。
检查路由器模式。如果您在历史模式下使用Vue Router,则需要将服务器配置为使用index.html文件响应所有路径。请确保您的应用已为此设置,并且后端服务器(vuejs-service)已相应配置。

au9on6nz

au9on6nz2#

所以经过一番研究,我找到了解决方案。我需要创建一个nginx conf并将其添加到我的docker容器中。

events {
    worker_connections 1024;
}
http {
  server {
    listen 80;
    server_name localhost;
    include /etc/nginx/mime.types;
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
  }
}

字符串

相关问题