Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 应用程序引擎或其他云环境的入站静态固定IP地址代理_Javascript_Node.js_Google App Engine_Proxy_Firewall - Fatal编程技术网

Javascript 应用程序引擎或其他云环境的入站静态固定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

AppEngine和其他一些云平台正在使用广泛的IP地址,这使得那些有防火墙限制的人很难做到这一点

我们的客户希望使用我们的服务,但他们只能向已知IP地址发送请求


如何设置固定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),只是为了避免可能的安全限制