0

node.jsを使用して実行する単純なアプリケーションがあります。以下は私のserver.jsです:

var myApp = require('./lib/myapp')
new myApp({
port: 8000
 });

http://myserver.com:8000でアプリケーションにアクセスできます

https://myserver.comを使用してアクセスできるように設定したいと思います

ここでの質問に答えるさまざまな方法を試しましたが、うまくいきません。アプリケーションの初期化の仕方が理由だと思いますが、よくわかりません。

Apacheの後ろに置くことができることは知っていますが、ノードを使用してやりたいと思います。

誰かが私のためにこのserver.jsを変更できるなら、それは大きな助けになるでしょう!

ありがとう

ノーマンA。

4

3 に答える 3

0

この質問に貢献してくれた皆さんに感謝します。私は本当にすべてのポインタに感謝します!

JohnnyHKへの特別な言及。彼の提案は私を軌道に乗せました。node-http-proxyを使用して問題を解決することができました。シンプルで効果的!以下は私のserver.jsが今どのように見えるかです:

var MyApp = require('./lib/app');
var fs = require('fs'),
    http = require('http'),
    https = require('https'),
    httpProxy = require('http-proxy');

var options = {
  https: {
    key: fs.readFileSync('certs/server.key', 'utf8'),
    cert: fs.readFileSync('certs/server.crt', 'utf8'),
    ca: fs.readFileSync('certs/ca.crt', 'utf8')
  },
  target: {
    https: true // This could also be an Object with key and cert properties
  }
};

var app = new MyApp({
    port: 8080
  });  

var proxy = new httpProxy.HttpProxy({
  target: {
    host: 'localhost', 
    port: 8080
  }
});
https.createServer(options.https, function (req, res) {
  proxy.proxyRequest(req, res)
}).listen(443);

みなさん、ありがとうございました!

-ノーマンA。

于 2012-11-06T16:17:21.413 に答える
0

httpsセキュアレイヤー(ポート443)で実行することをお勧めします。最善の策は、Apache以上の背後に配置nginxし、node.jsがアプリケーションビジネスロジックに集中している間、実際のWebサーバーにSSL証明書などを管理させることです。

node.jsを使用して実行する場合は、こちらをご覧ください

于 2012-11-06T13:41:47.757 に答える
0

myAppはexpress/connectアプリですか?あなたが作成したキーワードを持つ奇妙なコンストラクターは好きではありませんnew。その内容を確認する必要があります。

  1. 「特権」ポートで実行することから始めます。つまり、に変更します800080、サーバーはそのままにしておきhttpます。
  2. 適切な特権でサーバーを実行する方法を理解したら、443と80をhttp簡単に交換できるはずです。https

ただし、クライアントは最初に到達しようとするため、サイトのバージョンhttpにリダイレクトする必要があります。https「高速な方法」で行う場合は、同じアプリをセットアップして、httpサーバーとhttpsサーバーの両方でリッスンさせることができます。http次に、すべてのリクエストをリダイレクトするミドルウェアを追加httpsすれば完了です。Express.jsでSSL/httpsを強制する方法をご覧ください。

編集:この回答には、よりクリーンなダブルサーバー/シングルアプリの設定がありますが、リクエストの転送については何も含まれていません:単一のエクスプレスアプリのHTTPとHTTPSでリッスンします

理想的な設定では、エクスプレス/接続アプリオブジェクトをにエクスポートしますmain.js。セパレートはrunner.js単にアプリを必要とし、それを正しいオプションで2つのサーバー(1httpと1https)に渡します。

于 2012-11-06T13:59:17.363 に答える