Я пытаюсь настроить внутренний прокси-сервер, чтобы все запросы, выполненные в клиентском приложении, работающем на порте 4200, переписывались на порт 80.
Когда я запускаю запрос:
getTranslation(lang: string): Observable<any> {
return this.http.get(`/translate?language=${lang}`)
.pipe(map(response => response));
}
Должно быть выбрано localhost: 80 / translate? Language = "en", но вместо этого должно быть выбрано localhost: 4200 / translate? Language = "en".
Я попытался настроить его через angular.json, добавив proxy.conf.json:
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "client-app:build",
"proxyConfig": "proxy.conf.json"
},
выглядит так:
{
"/api": {
"target": "http://localhost:80",
"secure": false
}
}
Но это не работает. Я читал, что в angular 7 сделано немного по-другому, и вы передаете прокси с помощью ng serve следующим образом:
"docker-start": "ng serve --host 0.0.0.0 --port 4200 --proxy-config proxy.js"
с файлом proxy.js:
var HttpsProxyAgent = require('https-proxy-agent');
var proxyConfig = [{
context: '/api',
target: 'http://localhost:80',
secure: false
}];
function setupForCorporateProxy(proxyConfig) {
var proxyServer = process.env.http_proxy || process.env.HTTP_PROXY;
if (proxyServer) {
var agent = new HttpsProxyAgent(proxyServer);
console.log('Using corporate proxy server: ' + proxyServer);
proxyConfig.forEach(function(entry) {
entry.agent = agent;
});
}
return proxyConfig;
}
module.exports = setupForCorporateProxy(proxyConfig);
Но, похоже, это тоже не работает, и запрос продолжает идти к localhost: 4200.
Приложение работает внутри контейнера докера, если это имеет значение.
Идея идеи?