我正在构建一个包含多个模块的解决方案。每个模块都是一个 ReactJs 应用程序,我尝试配置 nginx 将其发布到同一域上。举些例子:
http://应用程序域/授权
http://应用程序域/行政
http://应用程序域/仪表板
http://应用程序域/销售量
我的 nginx 公共目录如下:
|---/var/www
|----/auth
|----/admin
|----/dashboard
|----/sales
其中 auth、admin、dashboard 和 sales 是每个项目的子文件夹。
我的 nginx 服务器配置:
server {
listen 9000 default_server;
listen [::]:9000 default_server;
server_name localhost;
index index.html;
location / {
root /var/www/auth;
}
location /admin {
root /var/www;
}
location /dashboard {
root /var/www;
}
location /sales {
root /var/www;
}
}
每个项目的子文件夹都有类似的结构,如下所示
问题是当访问http://应用程序域/admin,例如,应用程序尝试加载根目录而不是子文件夹项目上的静态文件
GET http://localhost:9000/static/js/main.6314dcaa.js net::ERR_ABORTED
正确的做法是获取文件行政子文件夹如下:
GET http://localhost:9000/admin/static/js/main.6314dcaa.js
对此纠正 nginx 配置的更好方法是什么?
答案1
我认为您想要完成的任务可以通过扩展每个位置的根部分来完成,如下所示:
location /admin {
root /var/www/admin;
}
location /dashboard {
root /var/www/dashboard;
}
location /sales {
root /var/www/sales;
}
但这与仅拥有相同
location / {
root /var/www/
}
因为对 的调用http://application-domain/admin
将评估为/var/www/admin
.
第一个解决方案将隐藏其他任何内容,/var/www/
因为没有位置规则可以访问 say http://application-domain/private
。