angular - 多个位置的 nginx 上的 Angular 项目问题
问题描述
我愿意在我的 nginx 上部署 2 个 Angular 项目。一个项目是主网站,另一个是管理门户。我想让网站可以在www 上访问。example.com和www.example.com/admin上的管理门户。
我为项目制作了 2 个文件夹:
- /var/www/example.com/site
- /var/www/example.com/admin
这是我的服务器配置的相关部分:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/example.com/site;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name example.com;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ /index.html;
}
location /admin {
root /var/www/example.com;
try_files $uri $uri/ /admin/index.html;
}
}
主网站运行良好。但是,当我尝试访问 example.com/admin 时,我看到一个空白页面。当我打开控制台时,我会看到以下类似内容:
GET http://www.example.com/main-es2015.7a4cd1828bc2d3953908.js net::ERR_ABORTED 404 (Not Found)
似乎服务器正试图在 root 而不是 /admin 中查找 javascript 文件
当我尝试加载一个简单的 index.html 页面时,其中只有“TEST”文本工作正常。
我也尝试使用别名而不是 root,并得到了相同的结果
更新:我发现在使用ng build --prod --base-href=/admin/ 构建项目时,我必须将基本 href 设置为 / admin 。现在我的 js 文件是从example.com/admin/...加载的。但是,对于所有这些 js 文件,我仍然得到 404。
解决方案
你有两个选择:
- 根据
Referer
HTTP 标头为您的第二个应用程序资产使用相对根:
map $http_referer $root {
~^http://example\.com/admin/ /var/www/example.com;
default /var/www/example.com/site;
}
map $http_referer $prefix {
~^http://example\.com/admin/ /admin;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
index index.html;
server_name example.com;
location / {
root $root;
try_files $uri $uri/ $prefix/index.html;
}
location /admin {
root /var/www/example.com;
try_files $uri $uri/ /admin/index.html;
}
}
<base href="/">
在您的第二个应用程序<base href="/admin/">
的索引文件中更正(请参阅此Q/A)。
我认为第二种方法是首选。
推荐阅读
- c# - (c#) WinForm和uwp如何实现端口通信
- vba - 检查工作簿中多个单元格字符串值的值与另一个工作簿中的行的匹配
- c# - C# Winforms Backgroundworker 错误 - 对象未设置为对象的实例
- php - 创建新的laravel项目时权限被拒绝
- python - Python Pyx plot:改变虚线中点之间的间距
- mariadb - MariaDB + MaxScale 复制错误:从 I/O 线程停止,因为在尝试 SELECT @master_binlog_checksum 时遇到致命错误
- python - django不同表数据合并
- javascript - 从对象和嵌套数组中提取键
- mongodb - 有没有简单的方法通过猫鼬中的参考文档对 mongodb 集合进行排序
- php - SELECT mySQL 查询中的 PHP 语法错误