繁体   English   中英

NGINX 使用 Slim API 框架从子目录重定向到根目录

[英]NGINX redirect from subdirectory to root with Slim API framework

我想将对子目录 v1 (subdomain.domain.com/v1) 的请求转发到我在 Nginx 中的根目录。 尝试了这个这个答案(以及更多变体)但没有成功。 我使用 Slim API 框架。

我的 nginx 配置如下所示:

    events {
}
http {
  include /etc/nginx/mime.types;
  server {
    listen 80;
    server_name subdomain.domain.com;
    root /var/www/html;
    index index.php;
    try_files $uri $uri/ /index.php?$query_string;
    location /healthcheck {
      auth_basic off;
      allow all;
      return 200;
    }
    location / {
      if (!-f $request_filename) {
        rewrite ^(.*)$ /index.php$1 last;
      }
    }
    #location ~ \.php {
    # only allow index.php to be proxied to FastCGI process (more secure than all php files!)
    location /index.php {
      proxy_pass http://127.0.0.1:9000;
    }
    location location ~ ^/v1/(.*) {
      return 301 $scheme://$http_host/$1$is_args$query_string;
    }
  }
}

我的入口 yaml (Kubernetes) 看起来像这样:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
 name: ingress-ENVIRONMENT_NAME_SHORT-NAME_OF_DEPLOYMENT
 namespace: NAME_OF_NAMESPACE
 annotations:
   kubernetes.io/ingress.class: gce
   kubernetes.io/ingress.global-static-ip-name: ip-ENVIRONMENT_NAME_SHORT-NAME_OF_DEPLOYMENT
   networking.gke.io/managed-certificates: cert-ENVIRONMENT_NAME_SHORT-NAME_OF_DEPLOYMENT
   kubernetes.io/ingress.allow-http: "false"
spec:
  rules:
    - host: NAME_OF_DOMAIN
      http:
        paths:
          - path: /v1/*
            backend:
              serviceName: svc-ENVIRONMENT_NAME_SHORT-NAME_OF_DEPLOYMENT
              servicePort: 443

我只有在没有 /v1(只是 subdomain.domain.com)的情况下才能运行这个东西。 任何指导表示赞赏。

更新(2021 年 6 月):在 SLIM 4 中,这变得非常简单:$app->setBasePath("/index.php/v1");

我认为最好的方法是在入口级别甚至在到达入口之前进行重定向。 但是,GCE 入口还不支持HTTP 到 HTTPS重定向,更不用说任何类型的重定向了。

你拥有它的方式,基本上是这样的:入口收到一个/v1请求,然后它转到 Nginx 然后它说重定向到/但是重定向请求返回到入口,它说我不知道该怎么做/请求。

另一种方法是让您的后端服务于/v1或使用非常常见的两层方法。 GCE LB(没有入口控制器)➡️ Nginx 入口(进行重定向并具有更丰富的功能集)➡️ 后端。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM