Angular nginx上多个位置的角度投影问题

Angular nginx上多个位置的角度投影问题,angular,nginx,Angular,Nginx,我愿意在我的nginx上部署2个angular项目。一个项目是主网站,另一个是管理门户。我想在www.example.com上访问该网站,并在上访问管理门户 我为项目制作了两个文件夹: /var/www/example.com/site /var/www/example.com/admin 以下是我的服务器配置的相关部分: server { listen 80 default_server; listen [::]:80 default_server;

我愿意在我的nginx上部署2个angular项目。一个项目是主网站,另一个是管理门户。我想在www.example.com上访问该网站,并在上访问管理门户

我为项目制作了两个文件夹:

  • /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页面时,里面只有“测试”文本的页面运行良好

我还尝试使用别名而不是根,得到了相同的结果

更新:我发现在使用ng build--prod--base href=/admin/构建项目时,必须将base href设置为/admin/。现在我的js文件是从example.com/admin/加载的。。。。但是,我仍然得到了所有这些js文件的404。

您有两个选项:

  • 基于
    Referer
    HTTP头为第二个应用程序资产使用相对根目录:
  • 将第二个应用程序的索引文件中的
    更正为
    (请参阅Q/A)
  • 我认为第二种方法更可取。

    您有两种选择:

  • 基于
    Referer
    HTTP头为第二个应用程序资产使用相对根目录:
  • 将第二个应用程序的索引文件中的
    更正为
    (请参阅Q/A)
  • 我认为第二种方法更可取

    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;
        }
    }