Angular 使用nginx将子域上的应用程序指向子文件夹

Angular 使用nginx将子域上的应用程序指向子文件夹,angular,nginx,subdomain,subdirectory,Angular,Nginx,Subdomain,Subdirectory,我想将sub.example.com指向example.com/sub(实际上没有重定向)。我通过以下nginx配置实现了这一点: server { listen 80; server_name ~^(.*)\.example\.com$ ; root /var/www/html/example.com/public_html/sub; } 问题是,我在sub.example.com上有一个Angular应用程序,它试图从下面的路径加载它的js资源,但失败了(404未找

我想将sub.example.com指向example.com/sub(实际上没有重定向)。我通过以下nginx配置实现了这一点:

server {
    listen 80;
    server_name ~^(.*)\.example\.com$ ;
    root /var/www/html/example.com/public_html/sub;
}
问题是,我在sub.example.com上有一个Angular应用程序,它试图从下面的路径加载它的js资源,但失败了(404未找到):

要进行构建,我将使用以下命令:

ng build --base-href /sub/

如何解决这个问题?这是角度问题还是可以用nginx config解决?我尝试了代理通行证,但没有成功。

如果您的应用程序不是从根位置提供的,则路由器只需要指定base href,例如

在您的例子中,您添加了nginx规则,以便可以从子文件夹提供内容,但使用“根”位置()


因此,从角度来看,一切都像是从根文件夹提供的,这意味着不需要指定base href

如果您的应用程序不是从根文件夹提供的,则路由器只需要指定base href,例如

在您的例子中,您添加了nginx规则,以便可以从子文件夹提供内容,但使用“根”位置()


因此,从角度来看,一切都像是从根文件夹提供的,这意味着不需要指定base href

我在实现angular应用程序国际化时遇到了这个问题,需要从每种语言的不同子目录提供服务。检查。

我在实现Angular应用程序的国际化时遇到了这个问题,需要从每种语言的不同子目录提供服务。检查。

你真的需要在这里指定一个base href吗?我想是的,至少我在一开始通过example.com/sub访问应用程序时必须使用它,它的源位置没有改变,我现在只想通过sub.example.com访问它,我想尝试一下。因为您已经有了nginx重定向,所以应该不再需要它了。否则,如果在删除它后仍然不工作,请查看部署url选项it worked!你想把它作为一个答案发布,这样我就可以接受了吗?我添加了一个答案只是为了解释更多。你真的需要在这里指定一个base href吗?我想是的,至少我在一开始通过example.com/sub访问应用程序时必须使用它,它的源位置没有改变,我现在只想通过sub.example.com访问它,我想不带它试试。因为您已经有了nginx重定向,所以应该不再需要它了。否则,如果在删除它后仍然不工作,请查看部署url选项it worked!是否要将其作为答案发布,以便我可以接受?我添加了一个答案只是为了进一步解释。使用--base href/sub/argument导致了我的问题。使用--base href/sub/argument导致了我的问题。
ng build --base-href /sub/