質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

Q&A

解決済

1回答

7364閲覧

node.jsで動いているアプリケーションにサブドメインを割り当てたい

toofu__

総合スコア13

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

VPS

VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

0グッド

3クリップ

投稿2016/10/31 14:46

さくらVPSを借りていろいろ遊んでおりまして、そのなかでnode.js(Express)を使って動いているアプリケーションに関してアドバイスをいただければと思っています。

できればサブドメイン「fuga」を使って

のようにしたいのですが、何をどのように設定したら良いのでしょうか。

ためしに/etc/httpd/conf/httpd.confに以下のように書いてみたのですが、どうやら違うようです。

<VirtualHost *:80> ServerName fuga.hoge.com ProxyPass / http://localhost:11111/ ProxyPassReverse / http://localhost:11111/ </VirtualHost>

ご存じの方いらっしゃったらお知恵いただけますとうれしいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

apache server のバージョンを 2.4 と想定して解答します。

操作としては、
apacheの設定ファイル httpd.conf 内の mod_proxymod_proxy_http.soを有効化、
すなわちそれぞれの LoadModule のコメントアウトされている部分を

#LoadModule proxy_module libexec/apache2/mod_proxy.so #LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so

これらの頭の # を取って、

LoadModule proxy_module libexec/apache2/mod_proxy.so LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so

ファイルの最後に以下を追加することで期待されている挙動になるかと思います。

# Website A <VirtualHost *:80> DocumentRoot /var/www/html ServerName hoge.com # その他必要な設定を足す <Directory /var/www/html> Require all granted </Directory> </VirtualHost> # Website B <VirtualHost *:80> ProxyRequests Off ProxyPass / http://localhost:11111/ ProxyPassReverse / http://localhost:11111/ ServerName fuga.hoge.com <Proxy *> Require all granted </Proxy> </VirtualHost>

VirtualHost の設定については、一方のサイトだけでなく
WebサイトA・Bどちらともに VirtualHost の設定を書くことで
hoge.com へのアクセスと fuga.hoge.com へのアクセスそれぞれの設定を書き分けることができます。

また、今回は node.js のアプリケーションへアクセスを通す必要があるため、、
Website B 用の VirtualHost 設定ではプロキシを使用しています。

それを実現するためのプロキシ機能が Apache Server のデフォルトでは
無効となっておりますので、(今回はhttpアクセスをプロキシするので) mod_proxymod_proxy_http
有効化をする必要があります。

今回の一連の内容については公式のバーチャルホストの例あたりが参考になるかと思います。

投稿2016/11/01 19:52

ezaki

総合スコア204

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toofu__

2016/11/03 16:07 編集

ありがとうございます! 頂いたコメント参考にしながらいろいろ試したところ、以下の設定でうまくいきました。 Apacheが2.2.15だったからか、一部記述を変える必要があったみたいです。 ``` # Website A <VirtualHost *:80> DocumentRoot /var/www/html ServerName hoge.com #<Directory /var/www/html> # Require all granted #</Directory> </VirtualHost> # Website B <VirtualHost *:80> ProxyRequests Off ProxyPass / http://localhost:11111/ ProxyPassReverse / http://localhost:11111/ ServerName fuga.hoge.com <Proxy *> #Require all granted Allow from all </Proxy> </VirtualHost> ``` アドバイスのおかげで前に進むことができました。ありがとうございました。
ezaki

2016/11/03 17:03

Apache 2.2 でしたか。失礼いたしました。 `Require all granted` の部分が2.4以降の書き方ですので、 変更いただいたように、そこを2.2の書き方に変えればOKですね。 蛇足になりますが、今回の Node へのアクセスのようなリバースプロキシを書く場合、 Apache server ではなく nginx を使われる方も多いようです。 それぞれに長所・短所ありますのでどちらが良いと言うものではありませんが、 このような選択肢もあることを記憶されておくと、後々何か役に立つかもしれません。
toofu__

2016/11/04 10:24

いえ、こちらこそ前提情報が足りていなかったようで失礼いたしました。 nginx、名前こそ聞いたことがあったもののサーバー周りはあまり明るくないためちゃんと調べたことがありませんでした。。 これを気に勉強してみようかと思います、アドバイスありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問