2017-11-22 31 views
-1

私は、cPanelを使用する共有ホスト上でApacheサーバーを実行しています。私は正常にサーバーにnode.jsをインストールしましたが、問題は私のホストはアウトバウンドポートを開くことができ、私はブラウザsoooを介してポートにアクセスできる必要があります、私はポートを使用する必要はなかったのだろうか?例えば同じように、ここに私のコードです:node.jsアプリケーションはポートでリッスンする必要がありますか?

const express = require('express'); 
const req = require('request') 

var app = express(); 
var port = process.env.PORT || 8016; 

var server = app.listen(port,() => { 
    console.log('Server listening on ' + port); 
}); 

は、私には、例えば、アプリケーションがポートを必要としないし、それは代わりに、example.comのようなポートのドメインの消灯しますか?私がapp.route()を追加したいのと同じように、私はpublic_htmlでこれを行うことができますか?

+0

Webサービスは、ポートなしではアクセスできません。あなたがブラウザに入力するドメイン名は複雑さを隠すだけです。 http://example.comはポート80に移動します。https://example.comはポート443に移動します。Apache httpdを[ノードアプリケーションへのプロキシ要求]に設定する必要があります(https://serverfault.com/questions/497856/using-an-apache-virtualhost-to-access-a-node-js-instance-同じサーバー上) – Matt

答えて

1

すべてのサーバープロセスはポートでリッスンする必要があります。

http://www.example.comのようなURLが表示されている場合は、暗黙のポートがあります。プロトコルがhttpであり、URLにポートがない場合、ブラウザは自動的にポート80を使用します。したがって、そのURLがサーバーに到達すると、example.comのサーバーはポート80で待機しているためです。 httpsは443

は、私は、たとえば、アプリケーションがポートを必要としない作りでしたし、それがexample.comのようにポートの代わりにドメインの消灯アプリケーションサーバーがリッスンする必要が

号ポート上で上記のように、ポートがそのプロトコルの「デフォルト」であり、URLを処理しているユーザーが自動的に正しいポートを使用する場合は、URLからポートを離れることができます。しかし、サーバーは引き続き適切なポートで待機している必要があります。

私はapp.route()を追加したいのですが、私はpublic_htmlでこれを行うことができますか?

この意味はわかりません。 HTMLファイルにルートを追加しません。ルートを追加する作業は、サーバー上のJSファイルで行われます。

私はcPanelを使用する共有ホスト上でApacheサーバーを実行します。

通常、そのタイプのホスティングからの着信接続を直接処理するnode.jsサーバーは実行できません。長い間実行されているサーバープロセスをサポートするホスティングが必要です。あなたのプロバイダは、(異なるレベルのサービスで)提供するかもしれないし、別のプロバイダを必要とするかもしれない。

Apacheをプロキシとして使用してnode.jsサーバーに着信接続をルーティングする方法はありますが、通常は共有ホスティング環境で自分自身を構成できるものではありません。それは通常より高いレベルのホスティングサービスを必要とするでしょう。

Apacheからのバッチ実行環境としてnode.jsを使用することもできます(これは、ApacheがPHPを実行する方法と多少似ていますが、node.jsサーバーを実行していないこともあります)。これはApacheで特定のルートがヒットするたびにnode.jsスクリプトを最初から実行しているだけです(そういうわけではありません)。

この便利な情報は、Running Node.js in apache?です。

+0

@CraigMitchell - あなたのホスティングは、あなたのドメインに着信したポート80要求をnode.jsサーバーにリダイレクトしますか?それがあなたが必要とするものです。そして、あなたのホスティングは長い間実行されているnode.jsサーバーを許可しますか? – jfriend00

+0

私はそれが 'EACCES 0.0.0.0:443'と気づいたので、サーバーは0.0.0.0だと言っていますか?これがこのエラーが発生する理由ですか? –

+0

@CraigMitchell - [Google "EACCES nodejs。server"](https://stackoverflow.com/questions/9164915/node-js-eacces-error-when-listening-on-most-ports)を試しましたか?そうした場合、1024以下のポートでサーバーを起動するために昇格された特権が必要であることがすぐに分かりました。これは、適切な特権を持たない場合に発生する典型的なエラーです。 – jfriend00