使用nginx将子域上的角度应用指向子文件夹

时间:2018-02-18 13:23:33

标签: 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 Not found):

http://sub.example.com/sub/inline.bundle.js
http://sub.example.com/sub/vendor.bundle.js
...

要进行构建我正在使用以下命令:

ng build --base-href /sub/

如何解决这个问题?这是Angular问题还是我可以用nginx配置修复它?我尝试过proxy_pass但没有成功。

2 个答案:

答案 0 :(得分:3)

如果您的应用未从根位置投放,则仅需要为路由器指定base-href,例如http://example.com/sub

在您的情况下,您添加了nginx规则,以便可以从子文件夹提供内容,但使用“根”位置(http://sub.example.com

所以从角度来看,一切都像是从根文件夹中提供的,这意味着没有必要指定base-href

答案 1 :(得分:0)

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