リバースプロキシを使う
Rubyにおける代表的なポート 3000
- Rubyは通常はポート番号として「3000」を使う。
- 例えばwww.example.comというマシンでrubyを動かしている場合、
* http://www.example.com:3000/
- というように「:3000」を後につけてアクセスすることになる。
- IPアドレスを電話番号に例えるなら、この「ポート番号」は「内線番号」のようなものである。
-
Webは通常「80」番を使うことになっており、特に何も指定しない場合にはポート番号は80番を指定したことになる。そのため、下記二つは同じURLの意味となる。
* http://www.example.com/ * http://www.example.com:80/
- メール送受信で使うSMTPは25番、POPは110番など、プロトコル毎に通常使うポートが定められている。
- あくまで「通常」使うものなので、「うちのrubyrubyは 9876番だからね」などと、サービス提供者と利用者の間で確認できていれば、別の番号にす ることもできる。
- しかし、環境によってはファイアウォールによって80番以外へのアクセスは遮断されている場合もある。
- そのような環境では、ポート3000番へのアクセスを、サーバ側でポート80番にリダイレクトしてやるといった設定が必要になる。
- ここで、ポート80番へのアクセスをサーバ側で別のポートへと接続してやることを、リバースプロキシと呼んでいる。ここではWebサーバとしてApacheを使っている際に、そのリバースプロキシを使う設定方法について述べる。
Apache-2.0.54における設定方法
- Apache2では機能のモジュール化,バーチャルホストのモジュール化,そしてそれらの設定の分離化が進んでおり,他の設定に影響を与えないようにしながら,追加設定がやりやすくなっている.
- Debian の場合,設定は /etc/apache2 以下にあるだろう.FreeBSD であれば /usr/local/etc/apache2 にあるだろう.
-
リバースプロキシの有効化
# a2enmod proxy # a2enmod proxy_http
- ホスト名で振り分けるようにする
- http://qwik.example.com/ でアクセスできるように設定する.
-
注意:
- Apacheの設定以前に、DNSの設定でqwik.example.comがwww.example.comと同じIPアドレスを指すようになっている必要がある。
- このとき,qwik.example.com でメールも受け取りたい場合,CNAME で指定してはいけない.必ずAレコードにする
- でないとqmailなMTAからメールを受け取れないことがある.qmailはMXがCNAMEだと,SMTPではRCPT TOでのメールアドレスをCNAMEでなく,CNAMEが指す実名に書き換えてしまうため.
- Apache-1.xとは異なり,メインのWebページについては再度VirtualHostとして記載する必要はない.
- ふつうは /etc/apache2/sites-available/default で設定済みであろう.
-
Debianであれば /etc/apache2/sites-available/qwik.example.com というファイルに
/etc/apache2/sites-available/qwik.example.com <VirtualHost 192.168.0.1:80> ServerName qwik.example.com ProxyPass / http://127.0.0.1:3000/ </VirtualHost>
- と書く.192.168.0.1 は(外部に公開するサイトなら)実際には外部から参照できる,つまりグローバルIPアドレスである必要がある.
続いてリバースプロキシの設定をする.
<IfModule mod_proxy.c> #turning ProxyRequests on and allowing proxying from all may allow #spammers to use your proxy to send email. ProxyRequests Off <Proxy *> Order deny,allow # Deny from all Allow from all #Allow from .your_domain.com </Proxy>
-
とする.設定が終わったら,有効化して再起動する.
# a2ensite qwik.example.com # /etc/init.d/apache2 restart