如何使用代理设置部署Angular应用程序
我有一个代理配置文件,它有一个指向目标的API(web服务)链接,用于调用我们的数据库。使用npm start,此代理配置在本地运行良好 现在我需要将此应用部署到IIS上的windows生产服务器。 我使用了ng build和ng build--prod看起来这不是使用代理设置生成构建。 我需要有关如何使用代理设置生成生成以便将其部署到prod server的帮助 Api部署在其他域上,此angular应用程序将部署在其他域上如何使用代理设置部署Angular应用程序,angular,Angular,我有一个代理配置文件,它有一个指向目标的API(web服务)链接,用于调用我们的数据库。使用npm start,此代理配置在本地运行良好 现在我需要将此应用部署到IIS上的windows生产服务器。 我使用了ng build和ng build--prod看起来这不是使用代理设置生成构建。 我需要有关如何使用代理设置生成生成以便将其部署到prod server的帮助 Api部署在其他域上,此angular应用程序将部署在其他域上 谢谢代理配置文件用于本地开发web服务器。使用它的主要原因是,在本地
谢谢代理配置文件用于本地开发web服务器。使用它的主要原因是,在本地计算机上开发Angular应用程序和api时,可以避免跨域请求,而不必在api中允许跨域请求 发布到生产环境时,不支持代理配置文件。您将发布到生产web服务器 如果您的api托管在同一个域下,则不需要代理请求,因为它们不是跨域的,如果api位于另一个域上,则需要允许api中的跨域请求。将Angular 8应用程序部署到生产环境中 您可以使用环境功能,例如: 对于开发 proxy.conf.json
{
"/api": {
"target": "http://localhost:3000/api",
"secure": false,
"pathRewrite": {"^/api" : ""}
}
}
您可以在environments/environment.ts中设置后端baseURL
export const environment = {
production: false,
backend: {
baseURL:"http://localhost:3000/api"
}
};
export const environment = {
production: true,
backend: {
baseURL:"http://example.com/api"
}
};
在服务中使用baseURL:
baseUrl: string = environment.backend.baseURL;
getAll(): Observable<UsersResponse> {
return Observable.create(observer => {
this.http.get<AccountsResponse>(`${this.baseUrl}` + '/users')
.subscribe((result) => {
const accountsResponse = result;
observer.next(accountsResponse);
observer.complete();
});
});
}
发展网址:
http://localhost:4200/yourapp
正在运行的服务将启用CORS并将API调用发送到
http://localhost:3000/api/v1
用于部署到生产中
为生产生成的命令:
$ng build --prod --base-href=/yourapp/
该服务将从prod环境配置中获取baseURL:
环境/environment.prod.ts
export const environment = {
production: false,
backend: {
baseURL:"http://localhost:3000/api"
}
};
export const environment = {
production: true,
backend: {
baseURL:"http://example.com/api"
}
};
因此,通过使用不同的环境,您可以配置不同的api URL。
请记住在生产web服务器中启用CORS,默认情况下,浏览器不允许连接到为Angular应用提供服务的域以外的域。选项1:不要使用IIS服务器。
您可以使用node和express创建一个应用程序,为您的静态文件提供服务,并成为api服务器,它将调用正确的应用程序(几乎像重定向)
ng serve--proxy config可能做的是运行一个节点服务器,将您的应用程序公开为静态,并根据您的配置运行api重定向(调用服务器)到服务器
当我们从节点服务器调用api时,没有CORS,因为我们没有像web应用程序那样的主机名
选项2:使用IIS和节点/快速应用程序##标题##
您可以创建一个应用程序,并允许CORS访问您的主机名。从这个应用程序中,您可以公开一个通用api并调用正确的api服务器。据我所知,不确定这是否可行!我们在一个网站上发布了API和webapp来避免这种情况!你打算在哪里部署这个?云?Windows服务器?将要部署在Windows服务器上好的,IIS服务器?嗨@daniel mora我有个问题要问你。如果您还需要部署到其他环境(如RC、QA、测试等),该怎么办?如果每个环境都有多个,例如10个QA环境,会怎么样?