簡體   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