カテゴリー
Uncategorized

別PCで動作するRailsアプリにlocalhost:3000でアクセスしたい

Webカメラとマイクを利用するアプリケーションの開発で複数の端末で動作検証をしたいと思いました。

しかし、WebカメラとマイクはlocalhostまたはSSL化されたサイトでしか動作できないというブラウザ仕様があるため、localhost:3000で別のPCで動作するRailsアプリケーションにアクセスできるようにする必要があります。

ローカルで起動したRailsアプリケーションにアクセスする分には、localhost:3000でアクセス可能ですが、/etc/hostsにドメインを定義する方法では、localhostでアクセスする事ができません。

では、どうすれば良いか。Nginxでプロキシすることで、それが可能です。

Railsアプリケーションを起動しているPC:Ubuntu
アクセスしたいPC:Mac

まず、接続元であるPCにnginxをインストールし、nginxの設定ファイルでserverを定義します。設定内容はシンプルで、server_nameがlocalhostである3000番ポートをリッスンするserverで、別PCのローカルIPへproxyするというものです。

server {
    listen       3000;
    server_name  localhost;

    proxy_set_header    X-Forwarded-Host $http_host;

    location / {
        proxy_pass http://192.168.1.12:3000;
    }
}

注意点として、RailsはCSRF対策の仕組みがデフォルトで有効なため、適宜必要なヘッダを設定してあげる必要があります。

# プロキシ先にHostを知らせます。この設定が無いと、originと一致しないためCSRFチェックがエラーになります。
proxy_set_header    X-Forwarded-Host $http_host;

以上!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です