如何使用代理配置将 angular 2 应用程序部署到 HTTP 服务器

kas*_*unb 5 deployment angular angular5

我正在使用以下代理配置构建 angular 2 应用程序。

代理配置文件

{ 
 "/": {
  "target": "http://localhost:6060",
  "secure": false,
  "changeOrigin": true,
  "logLevel": "debug" 
}}
Run Code Online (Sandbox Code Playgroud)

我使用 spring boot 应用程序作为我的后端,它在端口 6060 上运行

我的包json的构建脚本如下

包.json

"scripts": {
"ng": "ng",
"start": "ng serve --proxy-config proxy.conf.json",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
}
Run Code Online (Sandbox Code Playgroud)

当我使用npm start 时,应用程序工作正常。所有后端请求都发送到http://localhost:6060

然后我使用构建生产版本

ng build --prod --proxy-config proxy.conf.json
Run Code Online (Sandbox Code Playgroud)

并将生成的代码部署到 HTTP 服务器(apache 服务器)。然后我访问http://localhost/应用程序统计信息。但是当我尝试发出请求时,这些请求指向http://localhost/ ...而不是http://localhost:6060

我试图找到一些解决方案,但没有这些解决方案。请给我一些帮助。

谢谢

Pet*_*sen 4

ngserve 的 --proxy-config 参数仅适用于 CLI 中内置的开发 Web 服务器。它对其他部署目标没有影响,并且对您的生产构建没有任何作用。

您说您使用 apache,在这种情况下您应该使用 ProxyPass 指令设置 Apache:链接到 Apache mod_proxy 文档

通常对于 Ubuntu Linux 服务器,需要编辑:

/etc/apache2/sites-enabled/000-default
Run Code Online (Sandbox Code Playgroud)

并插入以下指令:

ProxyPass /path/to/backend http://localhost:6060/
Run Code Online (Sandbox Code Playgroud)

然后 Apache 会将您向http://localhost/path/to/backend发出的请求转发(代理)到http://localhost:6060