ApacheHTTPServerが何をしているのか知りたいです。
PHPのビルトインサーバー等では
セキュリティ的によくないことはわかるんですが
PHPのビルトインサーバーとの違いがよくわかっていないので
その違いを具体的に教えていただきたいです。
(個人的にはセキュリティを向上させる処理をしているのではないかと推測しています。)
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
質問が緩いので、回答者の主観でいろいろ回答が付きそうですが、公式の Wiki にこんな表現がありました。
What is Apache?
内容が少し古い気もしますが、そこそこ伝わるかと思います。
投稿2017/07/01 11:55
退会済みユーザー
総合スコア0
0
Apacheはセキュリティ的には、PHPのビルトインウェブサーバーに勝るところは(あまり)ないと思いますよ。
ブラウザはいくつものファイルを平行に取得しようとします。
一度HTMLを読み込むと、CSSやJavaScriptや画像などを幾つも並列に取得します。
Apacheはそれを(幾つか)並列に処理することが出来ます。
さらにいくつものクライアント(相手のパソコンです)と通信できます。
それに対して、PHPのビルトインウェブサーバーは、公式の説明を借りると
このウェブサーバーは単一のシングルスレッドプロセスしか実行しないので、 リクエストがブロックされると、PHP アプリケーションはストールします。
一台のクライアントの一つのリクエストしか処理できません。HTMLを返したら、次にCSSを返して、次にJavascriptを返して・・・みたいに逐次処理になります。
それがいくつものクライアントから来たら・・・そのうちリクエストがタイムアウトしてしまいます。
つまり取りこぼしてしまいます。絶対的に信頼性に欠けるわけです。
なので、そういうことは専門家、つまり、Apacheやnginxにやってもらった方がいい、ということになります。(それ以外にも理由がありますが・・・)
投稿2017/07/01 13:53
総合スコア4437
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
PHPに限らずなんですが、ぱっと思いつくのは
1.(PHP等)アプリケーションプログラムまで処理を流したくない場合、アプリケーションプログラムが"最前面"だと対応できないから。
2.ApacheHTTPServerの細かい設定を利用できるから。
でしょうか。
まず大原則として運営中のWEBサービスっていかなるときも"止めてはならない"のです。
ECサイトとかソーシャルゲームでよく"メンテナンス中"ってあるじゃん、て思うかもしれないけど、あれはちゃんと"メンテナンス中"ってレスポンスを返却する処理が動いている。でその処理はだれがやるかというとメンテナンス対象であるアプリケーションプログラム自身にやらせるわけにはいかない(メンテ中だから動く保証が無い)。こういう場合、Apacheでリクエストの処理先をアプリケーションプログラムから固定のメンテナンスページに変えてから作業に入るのがよくあるやり方です(Apacheが"メンテナンス中"ページを返す)。逆にいうとアプリケーションプログラムの前面に何もないとアウトです。
※PHPだと止める必要ない場合もあるとおもうけど再起動が必要なJavaやDBメンテが入る場合とかはまずこれが必要。あと根本的にバグってたら流石に止めざるを得ませんよね...。
あとは固定HTMLとかはいちいちアプリケーションプログラムに流さなくていい(性能面で)。その振り分けをさせるとかが1に該当します。
2の設定についてはDoS攻撃で同一IPの短時間連続アクセスを遮断するとか、管理画面でベーシック認証かけるとかが考えられます。
投稿2017/07/19 06:40
編集2017/07/19 06:54総合スコア276
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。