で、レンタルサーバーってなんなのさって話よ

## はじめに
どうも、本職はレーサーですが闇営業でエンジニアの真似事のようなことをしている horiken1216 です。

この記事は [**ConoHa Advent Calendar 2019**](https://qiita.com/advent-calendar/2019/conoha) 16日目の記事です。

15日目は ましろ さんの「[ConoHaサービスを使ったブログ開設の流れをかんたんに説明するよ](https://qiita.com/scmashiro/items/8d0f46a4e8c3e1194c64)」でした。[ConoHa WING](https://conoha.jp/conoha/wing/) でサクッとブログをはじめる手順が紹介されています。難しいことを考えずにシンプルな操作でセキュアなウェブサイトが出来上がってしまうのは魅力的ですね。

本稿、当初は「そうだロードバランサー作ろう」というタイトルで [ConoHa WING](https://conoha.jp/conoha/wing/) でなんとかしてロードバランサーを実装するという壮大な目標を掲げて書き始めたのですが、解決すべき課題が尽く解決できず断念したので以下雑談です。失敗談は機会があればいずれまた、なので今回黒い画面は出てきません、ご容赦ください。

[ConoHa WING](https://conoha.jp/conoha/wing/) って新しいサービスが出て1年経ったけど、従来の [ConoHa](https://conoha.jp/) と何が違うの？って疑問符が浮かんでいるウェブマスター向けのお話(いい声)。

## VPSとは違うの？
さて [ConoHa WING](https://conoha.jp/conoha/wing/) は共用ホスティングに分類されるサービスです。レンタルサーバー(レンサバ)という言い方をしたほうが馴染みのある人も多いかもしれませんが、レンサバでもいわゆる専用サーバーではなく、複数の利用者でリソースを共有する共用サーバーと呼ばれるタイプのもになります。
![よく見る絵i.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21166/4a7b8cbe-7721-a0a3-afc5-f5de78c970a3.png)
1台のサーバーリソースを復数の利用者で共有するサービスという意味では [ConoHa](https://conoha.jp/) ユーザーにおなじみの VPS と似ていますね。 VPS は利用者に仮想ホストを払い出して root (管理者)権限を渡すサービスであるのに対し、共用ホスティングはマネージドサービスの一種であり、一般にウェブやメール、データベースの領域とサービスを利用するためのアカウントを払い出すものです。意外とわかったようで区別ついてない方は多いんじゃないでしょうか。クラウドサービスとして分類することはあまりないのですが、視点によって SaaS とも PaaS とも IaaS とも言えるかもしれません。

### VPSは仮想専用サーバー
VPS は利用者に管理者権限があるのでできることの自由度が高く、技術さえあれば思い通りにサービスを実装することができます。しかし反面コンポーネントの選択もセットアップも自己責任、世界中からの攻撃や侵入の試みにさらされるホストを守るのも自己責任、通信やOS、ウェブにメールにデータベース等ミドルウェアのセキュリティを担保するのも自己責任、「よくわかんないけどQiitaに書いてあるとおりやったしこんなもんでしょ、ヨシ！」が改竄や情報漏洩などの致命傷になり得ます。VPSでサービスを運営するには運用管理の専門的スキルと運用体制が必要になるのです。
![現場猫.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21166/179464ff-ac34-ac61-6229-d2d62a095c43.jpeg)

### 共用ホスティングはシステム管理者不要？
一方共用ホスティングは、先に述べたように、マネージドサービスとしての側面を持ちます。管理者不要とまでは言いませんが、管理者権限がないのでできることの自由度は低いかわりに、ウェブサイトを公開するために必要なミドルウェア以下の層、そしてアプリケーションの動作に必要なプログラミング言語などの環境は[このはちゃん](https://conoha.mikumo.com/)さんが面倒を見てくれますので、利用者はその上で動作するアプリケーションや見た目に専念することができるわけです。さすが [ConoHa WING](https://conoha.jp/conoha/wing/)。ミドルウェア以下のレイヤーで何かあったら [**このはちゃんさんのせい**](https://www.conoha.jp/sla/) です。
![このは.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21166/33f4b7bd-e410-2087-eb61-c2dd74d879b1.jpeg)
**ただし、もちろん配置するアプリケーションから上の層については自己責任ですよ！**

(もし CMS の設定やアップーデートの面倒を見るのも面倒くさい、 Wordpress の管理画面なんて見たくもないという場合は、ブログサービスや note のような SaaS、あるいは CMS のマネージドサービス等を検討するべきでしょう。)

また高集積でオーバーヘッドが少なく、一般に同価格帯の VPS よりも潤沢なリソース(ただし共用)が使える、 WAF やメールセキュリティなど個人で導入しようとするとサーバー代以上のお金がかかるようなサービスも、事業者がまとめて契約しているため料金内で利用することができるなど、ボリュームによるメリットもあります。

使うミドルウェアを決め打ちして「ウェブサイトとメール」の提供に特化したかわりに、大勢のユーザーでリソースを効率よく共有でき、また下位レイヤーの運用管理からウェブマスターを開放する共用ホスティングは、その手軽さとコストパフォーマンス、そしてプロフェッショナルによる安心の運用管理で頼りになる存在というわけです。

### もちろんメリットばかりではないけれど
[ConoHa WING](https://conoha.jp/conoha/wing/) は共用ホスティングにしては自由度が高く、なまじ色々できてしまうために、自分でなんでもいじりたいエンジニア気質の利用者にとって、ソフトウェアの導入やミドルウェアの設定などで、管理者権限がない点が不満になるかもしれません。裏返せば自分でやらなくて良いというメリットでもあるのですが、どうしても不満な場合は VPS 等にステップアップしてエンジニアリングの腕を試してみるのが良いでしょう。

また、多くの利用者でリソース共有するわけですから、他の同居人が乱暴な使い方をすれば自分のサイトにも影響が出る可能性があります。この点は [**リザーブドプラン**](https://www.conoha.jp/wing/reserved/) を使うことで、ある程度解消が見込めます。共用ホスティングの仕組みを考えると VPS 程ではありませんが、利用者あたりで利用できるリソース量が保証されているので独立性が高く、他の利用者の影響を受けにくくなっていますね。

## 共用ホスティングで復数の異なるWebサイトを公開する仕組み
それぞれの利用者が独立した仮想ホストを持ち、個別IPアドレスを持つVPSとは違い、共用ホスティングでは基本的に各ウェブサーバーに与えられたグローバルIPアドレスはひとつで、これが同居する利用者間で共有されます。同じIPアドレスで同じウェブサーバーにアクセスしているのに、どうしてあるユーザーhogehogeさんと別のユーザーfugafugaさんのそれぞれのウェブサイトがそれぞれに表示されるのでしょうか。
 
[ConoHa WING](https://conoha.jp/conoha/wing/) では [nginx](https://nginx.org/) をフロントに立ててリバースプロキシとして動作し、バックエンドではアプリケーションサーバーとして [Apache](https://apache.org/) が動作していますが、それぞれの段階で異なる利用者のサイト、例えば https://hoge.test と https://fuga.test を区別する必要があります。そこが区別されないと、どのドメインでアクセスしても同じデフォルトコンテンツか、あるいはエラー画面が表示されてしまいます。([ConoHa WING](https://conoha.jp/conoha/wing/) だと nginx が 404エラー を返します)
![404.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21166/124ec901-f274-5de7-39b9-6d37ab6bc9e5.jpeg)
ドメイン名に応じたサイトのコンテンツを表示するには、ウェブサーバー側で名前ベースのバーチャルサーバ(nginx)、バーチャルホスト(Apache)といった仕組みを用い、HTTP リクエストに含まれる Host ヘッダに応じて表示するコンテンツを振り分けます。その結果、ブラウザから https://hoge.test でアクセスすると hoge.test のコンテンツが、 https://fuga.test でアクセスすると fuga.test のコンテンツと、それそれのドメインに応じた表示がなされるのです。(4日目くらいの記事でその辺触れられているので[チェックチェック](https://qiita.com/hozuca/items/73d8ef8a04270d4d7b77))
![virtualhost.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21166/7c677ae4-eedf-0d25-b53e-87fd177ee212.png)
んで、普通素直にこれで複数のサイトをホストするときは大量の server コンテキストや VirtualHost ディレクティブ を ウェブサーバーの設定ファイルに列記して食わせるわけなんですが、  [ConoHa WING](https://conoha.jp/conoha/wing/) では [mruby](http://mruby.org/) を使って SSL 証明書のセットやドキュメントルート、キャッシュ等諸々の設定を動的に変更しているみたいなので、興味のある方はそちらも[調べてみてね](https://speakerdeck.com/hironobu/conoha-wingwozhi-eruji-shu-inhurabian)！

ってことで皆様メリークリスマス良いお年を。

## あ、ちなみに
本日はイエス様に先駆けて僕の誕生日ですので祝っていただいても構いませんからね。