已经开发好久的系统,因为业务上没有需求,没有做上线部署,此系统为多租户系统,原来设计是通过租户码参数来识别的,每个租户访问,需要传自己的码过来,才能确定是哪个租户登录系统,
今天在部署的时候,突然想,每个租户使用不同的域名,那么这个问题不是就解决了吗,A用户访问,假如域名为:domain.c 在浏览器中输入,a.erp.domain.c 那么我就知道这个租户是a的,如果访问b.erp.domain.c 那么我就知道来的是b用户,这个时候,只要在 nginx中配置即可。
在配置是,由于服务器没有外网IP,(为了安全)所有服务都是通过云服务商提供的弹性负载来完成的。
具体流程为:
在nginx服务器上通过相应的配置
server {
listen 8080;
server_name ~^([\w-]+)\.erp\.domain\.c$
index home.html;
client_max_body_size 50M;
location ^~/erp-api/
{
index index.html home.html;
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.0.17:20001/;
proxy_cookie_path /erp-api/ /;
proxy_set_header Cookie $http_cookie;
}
location /
{
root /usr/share/nginx/html/erp-saas-tenant-ui/;
index index.html home.html;
try_files $uri $uri/ /index.html;
}
}
即可正常访问接口,完成不同租户不同域名的配置。具体弹性负载怎么配置,因为没有找到相应的资料,所以每次增加域名,需要弹性负载增加上相应的配置才可使用。