Моя цель - настроить прокси http / https для redirectinspector.
В Google App Engine есть несколько географических зон, поэтому я использую это. Я создал сервер с использованием nodejs и развернул используемую стандартную среду. Как я видел в движке приложения stackdriver, доступ не предоставляется. Он хорошо работает на локальном хосте, но если мы развернем, он не удастся, потому что никогда не выполняется. Перед созданием собственного сервера (без дополнительных библиотек) я развернул два других прокси-сервера (anyproxy и http-proxy) и получил такой же ответ. Похоже на ошибку.
ниже развернутый код
'use strict';
const http = require('http');
const net = require('net');
const url = require('url');
const proxyServer = http.createServer((clientReq, clientRes) => {
console.log('on Request');
console.log(clientReq.url);
if (clientReq.url === '/') {
clientRes.end('Use as proxy, no direct invocation')
} else {
const proxy = http.request(
clientReq.url,
{
headers: clientReq.headers,
method: clientReq.method
}
);
proxy.on('response', (serverRes) => {
clientRes.writeHead(
serverRes.statusCode,
serverRes.headers
);
serverRes.pipe(clientRes, {end: true});
});
clientReq.pipe(proxy, {end: true})
}
});
proxyServer.on('connect', (clientRequest, clientSocket) => {
console.log('on Connect');
const srvUrl = url.parse(`https://${clientRequest.url}`);
console.log(clientRequest.url, srvUrl);
const srvSocket = net.connect(srvUrl.port, srvUrl.hostname, () => {
clientSocket.write('HTTP/' + clientRequest.httpVersion + ' 200 OK\r\n' +
'Connection: close\r\n' + '\r\n', 'UTF-8', () => {
srvSocket.pipe(clientSocket);
clientSocket.pipe(srvSocket);
})
});
srvSocket.on('error', e => {
console.log('srvSocket.on error: ', e);
});
clientSocket.on('error', e => {
console.log('clientSocket.on error: ', e);
});
});
const listener = proxyServer.listen(process.env.PORT || 3000, (err) => {
if (err) {
console.log('error starting server: ', err);
}
});
Похоже, proxyServer.on ('connect', ... никогда не выполняется. Как HTTP-запросы прокси не доставляются в приложение (журналы пусты, фильтруются на обратном прокси-сервере в облаке Google)
Кто-нибудь знает, что решение создает прокси на движке приложения? (не имеет значения, на каком языке используется)
Я знаю, что zeit.co, например, не позволяет размещать http-прокси. Их обратный прокси просто отбрасывает все запросы, не передавая их размещенной функции. Наверное, у Google такая же политика.