2016-12-27 15 views
6

からSSL localhostの目標:側面に沿ってhttps://127.0.0.1:443/api/に順番に非SSL http://127.0.0.1:1337/上で動作する私のUIを実行しますノードプロキシ - 私がやろうとしていますどのようなプロキシの基本的なHTTPサーバ

プロキシのJava APIいくつかのCORSの問題を一周する。

私の試み:

  1. プロキシ1338
  2. プロキシの私の非SSLの開発ポートへのSSLポート443でAPI :8080/index.htmlとプロキシに1337
  3. プロキシ1137に私のUI 8080
:1338アクセスローカルホストからの私のアプリ
  • :8080/api/

    私の問題:

    UIだけで罰金に付属しています...が、私ははい、私はまだhttps://localhost/api/httpSession/init

    api.jsでAPIを打つことができ:8080/api/httpSession/init

    でAPIを打つことができません - でのindex.htmlをレンダリング: - プロキシ133 1337

    var app = express(); 
    
    app.all('*', function (req, res, next) { 
        res.header('Access-Control-Allow-Origin', '*'); 
        res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS'); 
        res.header('Access-Control-Allow-Headers', 'Content-Type'); 
        next(); 
    }); 
    
    var options = { 
        changeOrigin: true, 
        target: { 
         https: true 
        } 
    }; 
    
    httpProxy.createServer(443, '127.0.0.1', options).listen(1338); 
    

    start.js 7 1338プロキシの問題については

    // First I start my two servers 
    uiServer.start(); // renders index.html at 1337 
    apiServer.start(); // 
    
    // I attempt to patch them back into one single non-SSL port. 
    app 
        .use('/', proxy({target: 'http://localhost:1337/'})) 
        .all('/api/*', proxy({target: 'http://localhost:1338/'})) 
        .listen(8080, function() { 
        console.log('PROXY SERVER listening at http://localhost:%s', 8080); 
        }); 
    
  • +0

    必要なものを実現するためにリバースプロキシとしてnginxを使用することをお勧めします。 [Here](https://www.garron.me/en/linux/nginx-reverse-proxy.html)は、必要なものと似たものを実現するための指示です。 [This](http://serverfault.com/questions/706694/use-nginx-as-reverse-proxy-for-multiple-servers)も助けてください... – mkhanoyan

    +0

    あなたのAPIを2回プロキシする理由はありますか? ?最初にポート1338に、次にポート8080に/ api /? –

    +0

    これは話題にはなりませんが、同じポートでこれを実現するためにリバースプロキシを使用するWebサーバーを使用することもできます。たとえば、IISまたはNginxを使用して、1つの仮想サーバー上のリバースプロキシエンドポイントを分離することができます。 –

    答えて

    2

    あなたが探しているものはrequest pipingです。この例を試してみてください。

    // Make sure request is in your package.json 
        // if not, npm install --save request 
        var request = require('request'); 
    
        // Intercept all routes to /api/... 
        app.all('/api/*', function (req, res) { 
        // Get the original url, it's a fully qualified path 
        var apiPath = req.originalUrl; 
    
        // Form the proxied URL to your java API 
        var url = 'https://127.0.0.1' + apiPath; 
    
        // Fire off the request, and pipe the response 
        // to the res handler 
        request.get(url).pipe(res); 
        }); 
    

    APIは、this SO solutionとして、到達できない場合の取り扱い、いくつかのエラーを追加してください。

    1

    8080に、私の推測では、それは、URLで/api/*を保っているし、それはあなたのAPIサービス内のルータ上に存在しないということです。 APIサービスのルータに/apiを追加してみると、URL文字列を送信するときにURL文字列をそのまま保持するためです。それ以外の場合は、URLをプロキシして書き換えて、APIがリクエストを経路に照合するようにする必要があります。

    corsモジュールをインストールしてアプリで使用するとどうなりますか?私は何か似たようなことをして、それはすべてのプロキシアイテムなしでうまくいきます。 https://www.npmjs.com/package/cors

    関連する問題