[微服务子文件夹体系结构的NGINX配置文件

问题描述 投票:1回答:1

[请耐心等待,因为我没有太多配置Nginx的经验。

我想将微服务创建为子文件夹。例如:www.example.com/users

USERS是微服务,因此USERS也将是子文件夹的名称。

该网站可以托管在/ var / www / html /或/var/www/html/example.com/public_html(假设此问题为此问题)

因此,在主文件夹/var/www/html/example.com/public_html中,有很多文件夹,每个文件夹代表一个微服务。

/var/www/html/example.com/public_html/users/
/var/www/html/example.com/public_html/students/
/var/www/html/example.com/public_html/teachers/
/var/www/html/example.com/public_html/parents/

每个微服务都会有一个最新文件夹,其中包含要执行的代码。

/var/www/html/example.com/public_html/users/latest/

每个最新文件夹都有2个文件夹-包含SPA前端代码的API和包含API代码的API

/var/www/html/example.com/public_html/users/latest/app/
/var/www/html/example.com/public_html/users/latest/api/

我想根据需要添加和删除文件夹,而无需更改Nginx配置文件。如果该文件夹存在,我希望显示相关的前端代码。其他404

我知道我可以根据需要在Nginx位置添加文件夹,但这不是我想要的。

(不想执行以下代码)

location /users {
  alias /var/www/html/example.com/public_html/users/latest/app
}

location /api/users {
  alias /var/www/html/example.com/public_html/users/latest/api
}

我正在尝试确定是否可以将NGINX配置为基于url指向相关文件夹。

这是我到目前为止所拥有的,但是对于我尝试的所有操作,它仅显示为404。我正在努力用Go-lang编写API,但是由于我有使用PHP的经验,因此在切换到Go之前,我会先走这条路线。

server {

    listen 80;
    listen [::]:80;
    server_name _;

    root /var/www/html/example.com/public_html;
    index index.html;

    location ^/<service>/<additional-optional-parameters-can-go-here>$ {
      root /var/www/html/example.com/public_html/<service>/latest/app;
      try_files $uri $uri/ =404
    }

    location ^/api/<service>/<additional-optional-parameters-can-go-here>$ {
      root /var/www/html/example.com/public_html/<service>/latest/api;
      try_files $uri $uri/ =404

      location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }

    }

    location ~ /\.ht {
        deny all;
    }

}

enter image description here

[请忍受,因为我在配置Nginx方面经验不足。我想将微服务创建为子文件夹。例如:www.example.com/users USERS是微服务,因此USERS将是名称...

vue.js nginx microservices single-page-application nginx-location
1个回答
0
投票

我认为您可以在位置和服务器行中使用正则表达式。

© www.soinside.com 2019 - 2024. All rights reserved.