Javascript 应用程序引擎或其他云环境的入站静态固定IP地址代理
AppEngine和其他一些云平台正在使用广泛的IP地址,这使得那些有防火墙限制的人很难做到这一点 我们的客户希望使用我们的服务,但他们只能向已知IP地址发送请求Javascript 应用程序引擎或其他云环境的入站静态固定IP地址代理,javascript,node.js,google-app-engine,proxy,firewall,Javascript,Node.js,Google App Engine,Proxy,Firewall,AppEngine和其他一些云平台正在使用广泛的IP地址,这使得那些有防火墙限制的人很难做到这一点 我们的客户希望使用我们的服务,但他们只能向已知IP地址发送请求 如何设置固定IP地址代理以将http/https转发到云服务?以下是一个简单的方法,介绍如何为云服务编写入站代理 要求:访问具有固定IP和安装Node.js的计算机 下面的节点脚本就是您所需要的 1) 剪切并粘贴到文件中并执行 2) 更改“my.server.com” 3) 更改SSL证书路径,下面是如何创建证书的说明 var
如何设置固定IP地址代理以将http/https转发到云服务?以下是一个简单的方法,介绍如何为云服务编写入站代理 要求:访问具有固定IP和安装Node.js的计算机 下面的节点脚本就是您所需要的 1) 剪切并粘贴到文件中并执行 2) 更改“my.server.com” 3) 更改SSL证书路径,下面是如何创建证书的说明
var
fs = require('fs'),
url = require('url'),
http = require('http'),
https = require('https');
var https_options = {
key: fs.readFileSync('/path/ssl_certificate/key.pem'),
cert: fs.readFileSync('/path/ssl_certificate/cert.pem')
};
function http_forward(request, response) {
'use strict';
var
target_host_options = {},
target_url_obj = url.parse('https://my.server.com' + request.url),
target_host_obj = https,
target_host_request;
target_host_options.hostname = target_url_obj.hostname;
target_host_options.path = target_url_obj.path || '/';
if (target_url_obj.auth) {
target_host_options.path = target_url_obj.auth;
}
target_host_options.agent = false; //Disable socket pooling
target_host_options.method = request.method;
target_host_options.headers = request.headers;
delete target_host_options.headers.host; //Necessary
target_host_options.headers['X-Proxy-Client-Ip'] = request.connection.remoteAddress;
target_host_request = target_host_obj.request(target_host_options, function (target_host_response) {
target_host_response.resume();
response.writeHead(target_host_response.statusCode, target_host_response.headers);
target_host_response.pipe(response);
});
target_host_request.on('error', function (err) {
response.writeHead(400, {'Content-Type': 'text/plain'});
response.write('PROXY target_host_request error\n');
response.write(JSON.stringify(err));
response.end();
});
request.pipe(target_host_request);
}
http.createServer(http_forward).listen(8080);
https.createServer(https_options, http_forward).listen(8443);
console.log('Inbound_proxy ..starting...');
如果您没有SSL证书:下面介绍如何使用linux/ubuntu创建SSL证书
$ openssl genrsa -out key.pem
$ openssl req -new -key key.pem -out csr.pem
$ openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out cert.pem
$ rm csr.pem
问题是什么?如何为Google App Engine和其他应用程序提供固定ip地址?这并没有回答问题我已使用节点v0.12.7和v4.0.0测试了此代理脚本代理正在侦听端口8080(http)和8443(https),只是为了避免可能的安全限制