【问题标题】:Point angular app on subdomain to subfolder with nginx使用 nginx 将子域上的 Angular 应用程序指向子文件夹
【发布时间】:2018-02-18 13:23:32
【问题描述】:

我想将 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 未找到):

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 但没有成功。

【问题讨论】:

  • 你真的需要在这里指定一个基本的href吗?
  • 我是这么认为的,至少我一开始通过example.com/sub访问应用的时候必须使用它,它的源位置没有改变,我只是想通过它访问它sub.example.com 现在
  • 我会说尝试不使用。由于您有 nginx 重定向,因此不再需要它。否则,如果删除后仍然无法使用,请查看 deploy-url 选项
  • 成功了!您想将其发布为答案以便我接受吗?
  • 我添加了一个答案只是为了解释更多。

标签: angular nginx subdomain subdirectory


【解决方案1】:

仅当您的应用不是从根位置提供时,路由器才需要指定 base-href,例如http://example.com/sub

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 使用 --base-href /sub/ 参数导致了我的问题。
    猜你喜欢
    • 2010-12-07
    • 2017-05-10
    • 1970-01-01
    • 2013-10-18
    • 2021-02-06
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 2019-03-07
    相关资源
    最近更新 更多