我在Angular 6上创建了一个项目,并像这样设置proxy.conf.json:
{
"/test-service": {
"target": "http://myhost:8080/test-service/",
"secure": true,
"pathRewrite": {
"^/test-service": ""
},
"logLevel": "debug",
"changeOrigin": true
}
}
在我的电脑上,它像魅力一样运转。但是当我这样做时:
ng build --prod --optimization=false
并将构建的文件复制到服务器(apache2 / var / www / html) 代理通行证不起作用 我尝试配置apache代理服务器通行证:
ProxyPass /test-service/ http://localhost:8080/test-service/
ProxyPassReverse http://localhost:8080/test-service/ /test-service/
但仍然没有运气。
我是否需要更改一些Apache配置或以某种方式将proxy.conf.json包含到构建中?
答案 0 :(得分:2)
proxy.conf.json未包含在生产文件中,因此需要另一种设置。
两个方法可能是:
将新创建的生产文件包含在服务器的“ public”文件夹中,以便将它们用作服务器的UI。
快递:
app.use('/', express.static(path.join(__dirname, './path/to/client/build/files')))
;
为与服务器分开的前端UI提供服务,同时允许CORS专门指向客户端来源(例如:localhost:4200
或www.example.com
)并确保API调用指向您构建的服务器。这可以通过environment
变量动态完成,该变量根据服务模式提供不同的值(prod:是/否);使用build --prod时,使用environment.prod.ts
值
那么您将需要在所有API调用字符串中都包含environment.APIEndpoint(例如:this.http.get(environment.APIEndpoint + '/route/somewhere')
要继续使用proxy.conf.json进行开发并准备产品,请执行以下操作:
在开发人员模式下:environment.APIEndpoint = 'test-service'
在生产模式下:environment.APIEndpoint = 'https://www.example.com/api' (or https://api.example.com')