ConoHaオブジェクトストレージ(OpenStack Swift)でWEB公開した超長いURLを短くする方法

  • 20
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

ConoHaオブジェクトストレージのURLの問題点

ConoHaのオブジェクトストレージ(OpenStack Swift)で公開したURLは絶望的に長いURLになることが下記の前回の記事で分かりました。
ConoHaオブジェクトストレージの静的WEBページ公開機能でイメージギャラリーを作る

糞長いURLの例
https://objectstore-r1nd1001.cnode.jp/v1/93a6500c0a1e4c68b976e5e46527145c/bgi_sample/index.html
https://objectstore-r1nd1001.cnode.jp/v1/93a6500c0a1e4c68b976e5e46527145c/bgi_sample/images/DSC02403.JPG

リンクタグ、イメージタグなどHTMLに埋め込むタイプの用途に使うならこの長いURLでもいいのですが、この長いURLにはいくつか問題があります。

  • あなたのサーバーがConoHaのオブジェクトストレージを使用していることがバレてしまう
  • あなたのオブジェクトストレージエンドポイント(93a6500c0a1e4c68b976e5e46527145cの部分)が丸見えになる
  • 糞長いURLのためそのままSNSや掲示板などに貼ると長ったらしくてみんなから嫌がられる

・・・とセキュリティ的にも利便的にもあまりいけてない仕様になってしまいます。

この問題はNginxでリバースプロキシで解決できます。

Nginxを使ってConoHaオブジェクトストレージのURLを短くする

conohaw.png

必要なもの

  • オブジェクトストレージのWEB公開しているコンテナ
  • Nginxがたてられるサーバー(ConoHa VPSやさくらサーバーなど)説明ではホスト名をhoge.comとする。
  • 短いドメイン(任意) ここでは hoge.com のドメインを取得してるものとする

ConoHaのオブジェクトストレージにweb_pub_testフォルダ(コンテナ)を作成しWEB公開モードにする

swiftコマンド等を使ってweb_pub_testフォルダを作成する

chinoコマンドの場合は以下
mkdir web_pub_test
echo "Hello" > web_pub_test/test_file.txt
bundle exec ruby chino.rb -w -s ./web_pub_test/ -d /web_pub_test

VPSサーバーにNginxをインストール

CentOSの場合
yum install nginx
もしくは以下のサイトから最新版をとってきて
http://nginx.org/packages/rhel/6/x86_64/RPMS/
curl -O XXXX.rpm
rpm -ivh XXXX.rpm

インストールするとかってにnginxサーバーは起動しているはず。

設定ファイルを書き換える

/etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location /x/ {
        proxy_pass https://objectstore-r1nd1001.cnode.jp/v1/93a6500c0a1e4c68b976e5e46527145c/web_pub_test/;
    }
}

location以降がプロキシーサーバーの設定になります。
http://hoge.com/x 以降にリクエストが来たときにConoHaのオブジェクトストレージ(web_pub_testフォルダ)にリクエストを受け渡すように設定する。

Nginxをリロード

nginx -s reload

ConoHaのオブジェクトストレージに短いURLでアクセスできる

上記の設定でブラウザから
http://hoge.com/x/test_file.txt にアクセスするとリバースプロキシされて
https://objectstore-r1nd1001.cnode.jp/v1/93a6500c0a1e4c68b976e5e46527145c/web_pub_test/test_file.txt
の内容が表示されます。

ConoHaオブジェクトストレージ+Nginxリバースプロキシの使いどころ

ConoHaのオブジェクトストレージ、またはOpenStackのSwiftを使用しファイルをWEB公開する場合、本格的に使用しようとすると
URLが長い問題に必ず突き当たると思われます。
そんな時はサクっとNginxのリバースプロキシ機能でURLを短くしちゃいましょう。