apache上的Angular 6 proxy.conf.json不起作用

时间:2018-10-16 12:42:05

标签: angular

我在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包含到构建中?

1 个答案:

答案 0 :(得分:2)

proxy.conf.json未包含在生产文件中,因此需要另一种设置。

两个方法可能是:

  1. 将新创建的生产文件包含在服务器的“ public”文件夹中,以便将它们用作服务器的UI。

    快递:

    app.use('/', express.static(path.join(__dirname, './path/to/client/build/files')));

  2. 为与服务器分开的前端UI提供服务,同时允许CORS专门指向客户端来源(例如:localhost:4200www.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')