首页 > 解决方案 > 带有或不带有斜杠的嵌套 Nginx 位置

问题描述

我正在构建一个应用程序,该应用程序由后端的 Laravel 和前端的 Nodejs 组成。要加入他们,我想通过https://localhost/admin/?带有或不带有斜杠的路线在 Nginx conf 中为 Laravel 创建位置。我已经设法用斜杠做到了这一点,但并非没有。

这是我的配置:

server {
    listen 443 ssl http2;
    server_name localhost;
    ssl_certificate /certs/localhost.crt;
    ssl_certificate_key /certs/localhost.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

    location / {
      proxy_pass https://nodejs:3000;
      proxy_ssl_verify off;
    }

    # Backend
    location /admin/ {
      alias /var/www/api/public;
      try_files $uri @admin;
      location ~ \.php$ {
          try_files $uri /index.php =404;
          fastcgi_pass php-upstream;
          fastcgi_index index.php;
          fastcgi_buffers 16 16k;
          fastcgi_buffer_size 32k;
          fastcgi_param SCRIPT_FILENAME $request_filename;
          #fixes timeouts
          fastcgi_read_timeout 600;
          include fastcgi_params;
      }
    }

    location @admin {
        rewrite /admin/(.*)$ /admin/index.php?/$1 last;
    }

   # BrowserSync websocket
    location /browser-sync/socket.io/ {
        proxy_pass http://nodejs:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }

}

我尝试了以下location ~ /admin/?(.*)$ {方法,但由于 Nginx 正在寻找一个不存在的位置,所以无法让它运行。我怎样才能做到这一点?

提前致谢。

标签: nginx

解决方案


无论如何, URI/admin应该会导致重定向,所以为什么不简单地添加:

location = /admin {
    return 301 /admin/;
}

推荐阅读