[1] [[Web開発]]の現場では[[本番サーバー]]とは別に[DFN[開発用Webサーバー]]を設けることがよくあります。

* 種別

[21] 
複数の関係者で利用するなどの理由で[[本番サーバー]]とは異なる[[ドメイン]]や[[サーバー]]などを用意し動作させる恒久的な[[開発サーバー]]と、
開発者の手元などで一時的に動作させるサーバーがあります。

[22] 
前者は恒久的とはいっても継続的な開発のため文字通り恒久的に運用する場合もあれば、
特定の短期開発目標の専用で短期間のみ運用する場合もあります。

[23] 
後者は[DFN[ローカルサーバー]]などと呼ばれることもありますが、
広く通用する共通の呼称はないと思われます。
[[Webアプリケーションフレームワーク]]の類などにはローカル開発用の特殊な
[[Webサーバー]]機能が含まれている場合があります。
開発中の[[Webアプリケーション]]を手軽に起動できるもので、
[[デバッグ]]のための便宜機能を利用できることが多いです。

-*-*-

[24] 
[[Web API]] を外部開発者に提供している場合などに、
[[本番サーバー]]とは異なるものの本番同様に運用される[[開発サーバー]]が外部に公開される場合もあります。

[EG[
[25] 
例えば[[決済]]機能を提供する [[Webアプリケーション]]は、
外部の [[Webアプリケーション]]の開発者が実際の[[決済]]は行わずに[[決済]]機能の自アプリケーションへの組み込みを実装・動作確認できるよう、
外部開発者向け[[開発サーバー]]を提供していることがあります。

]EG]

* 開発サーバーの設定

[20] [[開発用サーバー]]を用いて関係者だけで事前に開発・デバッグ・確認に供する場合、
次のように設定するべきです。

** 認証

[2] 適切な[[TLSクライアント認証]]や[[HTTP認証]]を設定するのが好ましいです。

[3] アクセス元[[IPアドレス]]による制限が行われることもよくありますが、
開発者や外部協力者のネットワーク環境の違いなどで悩まされがちです。

[16] 
これは、第三者に開発中の状態が漏洩することを防ぐために必要な措置です。
[[オープンソース]]の [[Webアプリケーション]]など、
特に秘匿するべきものが無い場合には、省略して構いません。

** [CODE[robots.txt]]

[4] 
[CODE[/robots.txt]] にアクセスがあった時、次のような[[テキストファイル]]を返すべきです。

[FIG[ [5] すべてを拒否する [CODE[robots.txt]]

[PRE(code)[
User-agent: *
Disallow: /
]PRE]

]FIG]

[15] 
これは、[[検索エンジン]]その他の[[ロボット]]に[[クロール]]されることを防ぐため必要な措置です。
[[認証]]により[[検索エンジン]]からアクセスされないはずの場合でも、
念のため設定しておくことをおすすめします。

** [CODE[<meta name=robots>]]

[6] [[HTML文書]]を返す場合、
[CODE[head]] [[要素]]内に次のように記述するべきです。

[FIG[ [7] すべてを拒否する [CODE[<meta name=robots>]]
[PRE(code)[
<meta name=robots content=noindex,nofollow,noarchive>
]PRE]
]FIG]

[14] 
これは、[[検索エンジン]]その他の[[ロボット]]に[[クロール]]されることを防ぐため必要な措置です。
[[認証]]により[[検索エンジン]]からアクセスされないはずの場合でも、
念のため設定しておくことをおすすめします。

[18] 
なお、
[[認証]]など適切な措置を他に講じない場合、
[CODE[<meta name=robots>]]
のみを指定しても当該 [[URL]]
が[[検索エンジン]]に掲載されたり、
[[アーカイブ]]系サービスに保存されたりすることを拒むことはできませんから、
注意が必要であります。

** リファラーの無効化

[9] [[リンク]]等から [[referrer]] が送信されないようにするべきです。

[REFS[
- [8] [CITE[Referrer を制御する - Qiita]] ([TIME[2017-05-29 13:44:56 +09:00]]) <https://qiita.com/wakaba@github/items/707d72f97f2862cd8000>
]REFS]

[12] 
これは、[[リンク]]の参照元 ([[referrer]]) として[[開発サーバー]]の [[URL]]
が[[リンク先]]の[[サーバー]]に送信されてしまうことを防ぐため必要な措置です。

[13] 
なお、 [[referrer]] は [[CSRF]] 防止など、
当該[[開発サーバー]]自身も必要としている場合があります。
その場合は完全に無効化するのではなく、自サーバーへの送信は認めるような指定が必要となります。

** 共有ボタン

[10] 
[[SNS]] の[[共有]]のボタン類が [[Webページ]]中に含まれる場合、
その対象として指定する [[URL]] を [CODE[https://www.example.com/]] に置き換えるなどするべきです。

[11] 
これは、誤操作により[[開発サーバー]]から[[共有]]してしまうことや、
ボタン表示のために [[URL]] を [[SNS]] の[[サーバー]]に送信してしまうことを防ぐため必要な措置です。

** メール送信、 Web Hooks

[17] 
[[インターネットメール]]その他[[電子メール]]や [[IM]]
の送信機能、
[[Web Hooks]]、
[[プッシュ通知]]、
その他これらに類する機能が備わっている場合、
関係者以外に送信されることがないように必要に応じて設定するべきです。

** 注意

[19] 
[[本番サーバー]]でこれらの措置を解除すること、
初の[[本番サーバー]]公開後に[[開発サーバー]]からこれらの措置が抜け落ちてしまわないことに注意。

* 実装

[26] [CODE[server.pl]]


* メモ

