##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を短くする
###必要なもの
- オブジェクトストレージの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サーバーは起動しているはず。
設定ファイルを書き換える
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を短くしちゃいましょう。