Apacheサーバーのサブドメインを介してnodejsアプリケーションを実行したいと思います。 cpanelでプライマリドメインのサブドメインを作成しました。 3つ以上のサブドメインとすべてのサブドメインを持つ私のプロジェクトは、異なるnodejsアプリケーションを指しています。サブドメインは適切なフォルダーにリダイレクトしますが、ブラウザーでサブドメインを介してアプリケーションを実行すると、Apacheサーバーでノードアプリケーションが実行されません。プロジェクトのフォルダリストのみが表示されます。
以下のリンクを参考にしてください。
http://www.codingtricks.biz/run-nodejs-application-Apache/
プロジェクトディレクトリ:
/ home/abc/public_html/node
私のプライマリドメインは:
cpanelでサブドメインを作成しました:
ブラウザでサブドメインにアクセスします:
node.example.com
アプリケーションをSoftLayerサーバーにデプロイしました。
以下はApache構成です:
ファイル:
/usr/local/Apache/conf/includes/abc_node.conf
構成:
<VirtualHost 132.159.25.21:80>
ServerAdmin [email protected]
ServerName node.example.com
ServerAlias www.node.example.com
DocumentRoot /home/abc/public_html
<Directory /home/abc/public_html/node>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location /node>
ProxyPass http://132.159.25.21:8080
ProxyPassReverse http://132.159.25.21:8080
</Location>
ErrorLog /home/abc/public_html/node/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /home/abc/public_html/node/access.log combined
</VirtualHost>
コマンドの要約:
コマンド:
/ usr/local/Apache/bin/httpd -tD DUMP_VHOSTS
出力:
AH00548: NameVirtualHost has no effect and will be removed in the next release /usr/local/Apache/conf/httpd.conf:445
VirtualHost configuration:
127.0.0.1:80 wb01-development.example.com (/usr/local/Apache/conf/httpd.conf:504)
127.0.0.1:443 wb01-development.example.com (/usr/local/Apache/conf/httpd.conf:554)
132.159.25.21:443 is a NameVirtualHost
default server example.com (/usr/local/Apache/conf/httpd.conf:368)
port 443 namevhost example.com (/usr/local/Apache/conf/httpd.conf:368)
alias www.example.com
port 443 namevhost wb01-development.example.com (/usr/local/Apache/conf/httpd.conf:554)
wild alias cpanel.*
wild alias whm.*
wild alias webmail.*
wild alias webdisk.*
wild alias cpcalendars.*
wild alias cpcontacts.*
132.159.25.21:80 is a NameVirtualHost
default server 132.159.25.21 (/usr/local/Apache/conf/httpd.conf:274)
port 80 namevhost 132.159.25.21 (/usr/local/Apache/conf/httpd.conf:274)
port 80 namevhost example.com (/usr/local/Apache/conf/httpd.conf:297)
alias www.example.com
port 80 namevhost node.example.com (/usr/local/Apache/conf/httpd.conf:446)
alias www.node.example.com
port 80 namevhost wb01-development.example.com (/usr/local/Apache/conf/httpd.conf:504)
wild alias cpanel.*
wild alias whm.*
wild alias webmail.*
wild alias webdisk.*
wild alias cpcalendars.*
wild alias cpcontacts.*
port 80 namevhost node.example.com (/usr/local/Apache/conf/includes/abc_node.conf:1)
alias www.node.example.com
*:* wb01-development.example.com (/usr/local/Apache/conf/httpd.conf:286)
コマンド
/ usr/local/Apache/bin/httpd -tD DUMP_MODULES
出力:
AH00548: NameVirtualHost has no effect and will be removed in the next release /usr/local/Apache/conf/httpd.conf:445
Loaded Modules:
core_module (static)
authn_file_module (static)
authn_core_module (static)
authz_Host_module (static)
authz_groupfile_module (static)
authz_user_module (static)
authz_core_module (static)
access_compat_module (static)
auth_basic_module (static)
socache_shmcb_module (static)
socache_dbm_module (static)
so_module (static)
include_module (static)
filter_module (static)
deflate_module (static)
http_module (static)
mime_module (static)
log_config_module (static)
logio_module (static)
env_module (static)
expires_module (static)
headers_module (static)
unique_id_module (static)
setenvif_module (static)
version_module (static)
proxy_module (static)
proxy_connect_module (static)
proxy_http_module (static)
slotmem_shm_module (static)
ssl_module (static)
mpm_prefork_module (static)
unixd_module (static)
status_module (static)
autoindex_module (static)
asis_module (static)
suexec_module (static)
cgi_module (static)
negotiation_module (static)
dir_module (static)
actions_module (static)
userdir_module (static)
alias_module (static)
rewrite_module (static)
bwlimited_module (shared)
suphp_module (shared)
security2_module (shared)
次のIPとポートを使用してノードjsアプリケーションを実行します
132.159.25.21:3030
nodejsアプリケーションでポートを次のように定義しました
var port = parseInt(process.env.PORT、3030)|| 8080;
このエラーを参照して:AH00548:NameVirtualHostは効果がなく、次のリリース/usr/local/Apache/conf/httpd.conf:445で削除される予定です。次のコードが記述されています。 NameVirtualHost 132.159.25.21:80
/usr/local/Apache/conf/httpd.confファイルの最後にmayvhostsファイルを配置しました。ファイルに「#編集しないでください。自動的に生成されます。変更が必要な場合は、ファイルを含めてください。」
この問題を解決するには、助けが必要でした。アプリケーションについてさらに知りたい場合はお知らせください。
構成は1ビットを除いて正しいように見えます。/nodeの場所のパスには、予期しない結果を招くことなく正しくリバースプロキシを行うために、ターゲットに一致するスラッシュが必要です。
わかりやすくするために、次のように定義します。
ProxyPass /node/ http://132.159.25.21:8080/
ProxyPassReverse /node/ http://132.159.25.21:8080/
ターゲットhttp://132.159.25.21:8080
を使用したプロキシは正しくなく、常にhttp://132.159.25.21:8080/
として定義する必要があるため、ソースは同じ方法でスラッシュと一致する必要があるため、/ node /が正しい方法です。
「NameVirtualHost」の警告について。そのディレクティブは2.2でのみ必要であるため、Apache HTTPDの2.4.Xバージョンでは不要になったことを示しています。2.4では、名前付き仮想ホストを「よりスマートに」検出できます。
補足:<Proxy *>
は効果がないため、定義しても意味がありません。プロキシ*はフォワードプロキシに使用されますが、明らかにそれを望まず、ProxyRequestsをオフにしてそのような機能を無効にしています。だからそれも削除します。
---コメントによる拡張機能の回答:
ノードに到達するには、以下にアクセスする必要があります。
http://node.example.com/node/
または、それに移動する「デフォルト」リダイレクトを追加します。
RedirectMatch ^/$ /node/
-Indexesはサブディレクトリに対して定義されているため、node.example.comにアクセスしてインデックス(ファイルリスト)を取得しています。つまり、前のディレクトリではインデックスが有効になっているため、次のように定義します。
<Directory /home/abc/public_html>
Options -Indexes +FollowSymLinks
....
Node /はディレクトリではなく、バックエンドの仮想パスであるため、この場合には適用されない/ home/abc/public_html/nodeを定義する代わりに、修正シェイクのためにディレクトリパスに含めないでください。
アクセス中にバックエンドにアクセスしたいだけの場合 http://node.example.com/ ProxyPass/node /の代わりにこれを使用してください:
ProxyPass / http://132.159.25.21:8080/
ProxyPassReverse / http://132.159.25.21:8080/