2016-10-19 9 views
-1

AzureプラットフォームやVisual Studioに込み入って何かを忘れてしまったのか不思議です。シンプルなウェブサイトのフロントエンドとノードのバックエンドをAzure Web Appに移行する

Visual Studioに2つのプロジェクトがあります(これはlinkと同じです)プレーンなHTML/JS/CSSウェブサイトのフロントエンドとnode.jsサーバーのバックエンドが情報をパイプします。すべての機能はローカルでテストするときにVS内で期待するように機能します(ノードバックエンドはAzureの他のリソースにリクエストを出して結果を返す)が、私の人生にとってはこれを公開する簡単な方法はないようですフロントエンドとバックエンドを1つのAzure Web Appにインストールすることができます。これは、起動時にアプリケーションサービスがサーバーに独自のポートを割り当てるためです(バックエンドでノックすることができない静的ポートなし)。

明白なことが明白でないか、Webアプリケーションサービスであまりにも多くのことをやろうとしていて、バックエンドをVMや他のサービスに壊す必要がありますか?上記のようにリンクをコンパートメント化することはできましたが、ルートWebサイトで設定されているデフォルトのランディングページ以外の場所にpingまたは投稿することはできません。

編集:私は本当にどこかに間違った方向に回ってしまったのかと本当に思っています。基本的なノードアプリ:

var http = require('http'); 
var port = process.env.port || 1337; 
http.createServer(function (req, res) { 
    res.writeHead(200, { 'Content-Type': 'text/plain' }); 
    res.end('Hello World on port:' + port); 
}).listen(port); 

戻り

Hello World on port:\\.\pipe\a1f43073-e979-4a8b-b4ec-ec226b4760f8 

編集2:いくつかの掘削が有益であるhttps://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#network-endpoint-listeningにつながっています。しかし、それはまだ示唆:ローカルアドレスへ

接続試行(例えばローカルホスト、127.0.0.1)とマシン自身のIPが失敗し、除いて同じサンドボックス内の別のプロセスがリスニングソケットを作成している場合宛先ポート上で

だから、私が読んでいるのであれば、私のノードサーバーによって開始されたプロセスはリッスンソケットを作成するべきですか?ローカルホストかもしれない?私はこれを進めるとアップデートを投稿しますが、アドバイスや提案はまだ歓迎しています。

編集3:バックエンド操作をトリガーするルーティングを使用してフロントエンドをExpressフレームワークプロジェクトにラップすることで、私の問題を当面解決しましたが、これは理想とはほど遠いものです。私はnodejsのソケットでリッスンするサーバーを正常に起動できませんでした(さまざまなエラーコードが発生します)。誰かが、(同じ仮想ディレクトリまたは別個の仮想ディレクトリ内の)アプリケーション間で機能する内部のサンドボックス通信の例を持っていれば、私の環境ではないことを確かめることができます。時間が許せば自分のコードを掲示します。

+0

ウェブアプリケーションはポート80と443のインバウンドトラフィックのみをサポートしています。 –

+0

Azure Web Appは、いくつかのポートで「従来の」ウェブサイトを実行するのと同等のものですサーバーは、Webサイトからの呼び出しのために他のポートでリッスンするデータを要求することができます。これはリンクされた例の設定と似ています。 – 4xle

+0

@ 4xle node.jsサーバーのバックエンドのデフォルトポート80を別のポートに変更したいですか? –

答えて

0

あなたは、このようなコードを探しています:

app.set('port', process.env.PORT || 3000); 

var server = app.listen(app.get('port'), function() { 
    debug('Express server listening on port ' + server.address().port); 
}); 

私は空のノードのアプリを作成し、AzureのWebアプリケーションに展開お勧めします。次に、移植しようとしているアプリケーションとその違いを確認する

+0

私はできるだけそのショットを与えるでしょう。 – 4xle

+0

これは質問に答えません。ポートの変更や複数のポートでのリッスンは許可されていません。これにより、ノードアプリケーションは、App Serviceがアプリケーションをマップしたポートでリッスンすることができます(必要なステップですが、OPの問題を解決しないもの)。 –

+0

私の質問を結果で更新しました。 – 4xle

0

localhost:8001をazutanga.comにリダイレクトするには、nginxを使用して仮想ホストを作成します。 Webアプリケーションの多くのポートを使用するには、Expressを使用して、多くのアプリケーションオブジェクトを使用するポートとして作成できます。または、クラスタ(https://nodejs.org/api/cluster.html)を使用して、JavaソケットなどのTCP接続を共有します。

関連する問題