ル微王徴

リバースプロキシ

最終更新:

rubyocho

- view
メンバー限定 登録/ログイン

リバースプロキシを使う

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
    
ウィキ募集バナー