2017-06-02 8 views
0

この時点で私のREST APIはPHPで動作し、Apache2/Nginxの背後で実行されています(実際Apache2ではNginxへの移行が進行中です)残りのGolangとNode.jsのパフォーマンスについては、PHPからRESTをこのバリアントの1つに移行することを考えていますが、ここで取り残されているのは、REST全体ではなく一部のルートのみを移行する方法です。例えばPHPからNode.js/Golang/whateverへの別のRESTルートの移行

は、今私は、Apacheは二つの経路

/users/articles

を80ポートをリッスンし、それらのためのPHPのヘルプ復帰応答ではなく、どのような場合、私は、ノードに/articlesを移行したいされています。 js?どのように私のウェブサーバが/articlesのために何を知っているのですか?Node.jsが別のポートにある場合、Node.jsを呼び出す必要がありますが、/usersはまだPHPを使用していますか?

答えて

0

、ちょうどnginxので要求を処理し、リクエストURIは次のように、何かが含まれている場合、別のサーバーにリダイレクト:

server { 
    listen 127.0.0.1:80; 
    server_name localhost.dev; 
    location ~* ^/[a-zA-Z0-9]+_[a-zA-Z0-9]+_(?<image_id>[0-9]+).* { 
     include    proxy_headers.conf; 
     proxy_set_header X-Secure  False; 
     add_header   X-Image-Id $image_id; 
     access_log   off; 
     proxy_pass http://localhost-image-cache; 
     proxy_next_upstream off; 
    } 
} 

upstream localhost-image-cache { 
hash $server_name$image_id consistent; 
    server 127.0.0.1:81 max_fails=0; 
    keepalive 16; 
} 
1

旧式のPHP REST APIを使用するように新しいNode.js REST APIを設定し、準備ができたらNode.js REST APIのエンドポイントを置き換えることができます。

ここHapi.jsを使った例です(しかし、あなたはどのNode.jsのRESTfulなフレームワークを使用することができます):あなたは

const Hapi = require('hapi'); 
const request = require('request'); 

const server = new Hapi.Server(); 
server.connection({ port: 81, host: 'localhost' }); 

server.route({ 
    method: 'GET', 
    path: '/new', 
    handler: (req, reply) => { 
     reply('Hello from Node.js API'); 
    } 
}); 

server.route({ 
    method: 'GET', 
    path: '/{endpoint}', 
    handler: (req, reply) => { 
     request.get(`http://localhost:80/${req.params.endpoint}`) 
      .on('response', (response) => { 
      reply(response); 
     }); 
    } 
}); 

server.start((err) => { 
    if (err) { 
     throw err; 
    } 
    console.log(`Server running at: ${server.info.uri}`); 
}); 

あなたは(別のポートを使用して)同じサーバ上でPHPとNode.jsの両方を実行することができますが、おそらく、同じネットワーク内の別々のサーバーでそれらを実行する方がよいでしょう。すべてのエンドポイントを移動したら、サーバー上にPHP/etcは必要ありません。私の同僚からかなり良い解決策を見つけた

関連する問題