私はデジタルオーシャンドロップレットを使用しています(問題を解決するのに役立つ情報かもしれません)。
私の設定はこれです:
上記のアプリケーションはすべて、デフォルトの「インストール後」の状態です。
現在、PHPはポート80で実行されており、nodejsはポート3000で実行されています。したがって、次のように入力する必要があります。
mydomain.com
PHP用mydomain.com:3000
nodejsの場合私がやりたいことはこれです:
入力するsomeDomainForPhp.com/
と、phpのデフォルトの場所に移動します。/var/www/html/
入力するotherDomainforNode.com/
と、ノードのデフォルトの場所に移動します。/root/
したがって、私が理解していることから、Apacheは、このタスクを実行するために、内部ポートの再ルーティングを行う必要があります。
私はそれを行う方法を説明するインターネット上の多くのガイドに従ってきましたが、それらは主題に関するいくつかの基本的な知識を持っている人々のためのものだと思います。私はこれに対して非常に新しく「グリーン」であり、それに苦労しています。
誰かが喜んで手伝ってくれるなら、私は以下の情報を使うことができます:
私はグーグルで次の方法を試しました:
<VirtualHost 109.74.199.47:80> # server ip address or *
ServerAdmin [email protected] # any email address
ServerName thatextramile.be # domain name
ServerAlias www.thatextramile.be # any domain alias
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
</VirtualHost>
/etc/httpd/conf/httpd.conf
一番下のこのファイルに入れました。多くの人がこの方法は彼らのために働いたと報告しました、しかし私がそれを試みたならば、私は503 error
ドメインにアクセスしている間に得ました。だから私はこの503エラーをグーグルで検索しました、そして私は誰かが同様の問題を抱えているのを見つけました、そして彼は彼がLocation
次の方法でタグを変更することによってそれを働かせたと主張しました:
<Location /path/of/my/project> # for me it would be /root/
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
私がそれを試したとき、サーバーは仮想ホストディレクティブがまったくないように動作しました。ドメインにアクセスすることで、/var/www/html/index.php
Apacheから通常のファイルが提供され、プロキシもポートも変更されませんでした。
また、ローカルホストは悪い方法だと読みましたが、そうあるべきですが127.0.0.1
、これは何も変わりません。
デフォルトの設定は変更せず、httpdconfにvirtualhostディレクティブを追加しただけです。また、mod proxyなどの必要なすべてのモジュールが有効になっていることを確認し、fedora 20のドキュメントを検索してサーバーのステータスを確認しました。これらはデフォルトで含まれ、有効になっています。これは本当に奇妙に思えますが、一部の人にとっては上記の行を追加するだけで十分です。私にとっては、どれも機能しませんでした。503エラーに直面し、それを修正する方法がわからないか、プロキシをまったく使用していません。誰かがやって来て、困っている初心者の開発者を助けてくれることを願っています;)
調査を行っていたところchmod
、phpとnodejsのルートの場所であるディレクトリに配置された設定に関連する問題が発生したことがわかりました。私にはあまり論理的ではないように見えましたが、とにかく試してみました。両方のアプリケーションに関連するすべてのディレクトリの「すべてを許可する」構成にchmodを変更しました(テスト目的で)。それはまったく役に立たなかった。
また、ポート3000へのプロキシルーティングのみが含まれている可能性があり、通常のphpを表示するためのルールを作成しなかった可能性があると誰かが主張したブログも読みました。チュートリアルでは、nodejs用に作成されたルールとは別に、次のものも含まれている必要があることが示されていました。
<VirtualHost 109.74.199.47:80> # server ip address or *
ServerAdmin [email protected] # any email address
ServerName thatextramile.be # domain name
ServerAlias www.thatextramile.be # any domain alias
DocumentRoot /var/www/html/
</VirtualHost>
したがって、最初のルールはnodejsのポート3000にルーティングすることであり、これはphpで機能します。問題は、このルールを実装したときに無限ループが発生し、サーバーがロードされないことです。したがって、nodejs用に準備されたドメインに入ると503エラーが発生し、php用にドメインにアクセスしようとすると502エラーが発生します。
読んだ後、私は問題がどこにあるのかを指摘できると思いますが、それでも正確な解決策に関するヘルプを使用することができます。
これはテスト用のserver.jsファイルです。これは、nodeforeverモジュールを使用して無限に開始されます。
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
説明の最初のいくつかの言葉:
<VirtualHost>
ディレクティブを宣言する前に、を追加する必要がありますNameVirtualHost *
。代わりに、*
参照しているドメイン/ IPを正確に定義できます。*
もちろん動作しますが、安全性が低く、速度が遅いと考えられています。
プロキシを渡すことができるようにするには、ディレクティブを定義する必要があり、定義に関する<Proxy>
唯一の問題はAllow from all
です。この構文はApache2.2用であり、 Apache 2.4を使用しているため、最新のドキュメントによると、代わりにこれを使用する必要がありますRequire all granted
。
<Location>
あなたの場合のタグは、最初に持っていたものと同じである必要がありますが、スラッシュは1つだけ<Location />
です。その理由は、not
追加の名前空間を介してアプリケーションにアクセスしているためです。ストレートドメイン名を入力してアプリケーションにアクセスしています。
あなたがポートにアクセスPHPファイルにしたい場合80
にphpdomain.com
、ポート上のサーバーをNode.jsの3000
とnodejsdomain.com
、あなたがすべきnot
2つの仮想ホストを作成します。入力した場合にnodejsdomain.com
ポート3000を開くものを1つだけ作成します。さらに多くのnode.jsサーバーまたは他のプラットフォームを使用する場合にのみ、2番目以降の仮想ホストが必要になります。あなたがそれを作成したという事実のために、あなたは無限ループに陥りました。
main
プロキシが仕事をしない理由理由は、デフォルトでオンにブロックされたポート3000ですSELinux
。したがって、最初にこのコマンドを実行しsemanage port -a -t http_port_t -p tcp 3000
ます。(sudo
上記の構文の前にルートタイプとしてログインしていない場合)。
次に、仮想ホストディレクティブを使用します。
NameVirtualHost *
<VirtualHost *:80>
ServerName nodejsdomain.com
ProxyRequests off
<Proxy *>
Require all granted
</Proxy>
<Location />
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
</VirtualHost>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加