質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

解決済

2回答

1098閲覧

WEBサーバをAPサーバで置き換えることはできるのでしょうか

maikeru

総合スコア68

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

1クリップ

投稿2021/07/02 01:00

3層構造のWEBアプリケーションではWEBサーバ、APサーバ、DBサーバで構成されるようですが
Apache、NginxによるWEBサーバをAPサーバに置き換えて
APサーバ(静的コンテンツを返す)、APサーバ(アプリケーションを実行する)、DBサーバ
のようにすることもできると思います。この構成のデメリットは何でしょうか
APサーバでは大量のアクセスをさばききれない、Apache、Nginxが静的コンテンツを返すのに特化しているからでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/07/02 01:13

「APサーバ(静的コンテンツを返す)」と「WEBサーバ」の違いは何でしょうか?
maikeru

2021/07/02 01:20

「APサーバ(静的コンテンツを返す)」はnode.jsやgolangなどサーバサイドで利用される言語でhtml/cssファイルを返すプログラムで「WEBサーバ」はApache、Nginxなどという意味でした
AbeTakashi

2021/07/02 01:30 編集

置き換えるという意味がちょっと不明というか、両者ともほぼ同じことを言っている気もします。例えばnginx + php-fpm + MySQLであれば、nginxはWEBサーバでもあり、APサーバ(静的コンテンツを返す).であるとも言えます(httpプロトコルを使ってることが明確か、そうでないかの違いくらい)。WEBサーバ、APサーバの定義や範囲がそれほど明確ではないので、もし具体的な構成によるメリット・デメリットを聞きたいのなら、後者の二つのAPサーバは具体的に何を指すかを示した方がいいと思います。 ちなみに過去に同じような質問もあります https://teratail.com/questions/29400
maikeru

2021/07/02 01:36

Nginxを使用せずphp-fpm + MySQLではだめなのかが気になりました nginx + php-fpm + MySQLではnginxが静的コンテンツを返すと思うのですがnginx使わずにphp-fpmでもできますよね?
maisumakun

2021/07/02 01:56 編集

> nginx使わずにphp-fpmでもできますよね? できません。php-fpmはHTTPに応答できないので、単体でWebサーバとしては使えません。
guest

回答2

0

ベストアンサー

APサーバ(静的コンテンツを返す)、APサーバ(アプリケーションを実行する)、DBサーバのようにすることもできると思います。この構成のデメリットは何でしょうか

絶対的にこうだ、というものではないと思います。
そもそも、WEBサーバ、APサーバの区分けは相対的なものです。たとえば、Railsのアプリで、以下の構成だとApacheはWEBサーバです。

Apache(REeverse Proxy=WEBサーバ) - Puma(APサーバ) - MySQL(DBサーバ)

以下の構成だとApacheはAPサーバです。

Nginx(WEBサーバ) - Apache+mod_passenger(APサーバ) - MySQL(DBサーバ)

後者だと、Nginxはなくても問題ないわけですが、Nginxがキャッシュサーバとしての性能が優れているので、ウェブサイトとしての性能が向上することを期待してNginxを配置するわけです。

しかし、であれば、下記の構成でよいのではないかという話も出てきて、こちらが最近の主流かと思います。

Nginx(REeverse Proxy=WEBサーバ) - Puma(APサーバ) - MySQL(DBサーバ)

さて、上記の構成でNginxを取り除くことは可能でしょうか。PumaはHTTPSに対応しているので、一応以下の構成でも動きます。

Puma(WEBサーバ 兼 APサーバ) - MySQL(DBサーバ)

ところが、この構成だと、2つの問題があります。まず、WEBサーバの性能がNginxほどではないということ。次にセキュリティの問題があります。
上記の構成で80/TCPなり443/TCPなりで待ち受けするには、Pumaをroot権限で動かさなければなりません。

参考: [rails5 + puma]一般ユーザで443ポートのpumaを起動できない

そうすると、万一Railsのアプリケーションに脆弱性があった場合に、サーバのroot権限が奪取されることになります。この問題はApache Tomcat等でも現実に存在します。なので、仮にPumaやTomcatでHTTPSで待ち受ける場合には、Pumaを一般権限で動かして3000ポート等で待ち受けておき、ルータやiptablesなどで443等に振り向けてやります。ApacheやNginxの場合はいったんはroot権限で起動した後一般ユーザの権限で動作するのでこの問題は緩和されてます。

また、一部のPumaの脆弱性は前段にNginxをたてることで緩和されます。

JVNDB-2020-002385 - JVN iPedia - 脆弱性対策情報データベース

まとめると、3層構造のアプリケーションには性能やセキュリティ面でのメリットがある 場合があります が、構成にもよるため、個別の検討が重要ということです。

投稿2021/07/03 02:49

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

nginx使わずにphp-fpmでもできますよね?

に関してだけ答えます。

参考)
https://www.php.net/manual/ja/features.commandline.webserver.php

上記のリンクを読んで頂くと分かると思いますが、PHPのビルドインサーバーにはかなりの制限があります。他の言語でも同じようなことがあると思います。餅は餅屋で、ということだと思います。

追記)
maisumakunさんが回答してくれていますが、php-fpmだけではできないです(できるかもと思って軽く調べてみた限りで)。FastCGI Process Managerとしての機能しかありません。PHPをWEBサーバとして利用する場合にはApacheやnginxの力を借りるか、ビルドインサーバを使うかになると思いますので、上記のような答えになります。他の言語でも事情は同じような感じかと思います(Javaとかは微妙に違うかもしれませんが)

投稿2021/07/02 01:49

編集2021/07/02 02:21
AbeTakashi

総合スコア4537

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/07/15 03:01

> 他の言語でも事情は同じような感じかと思います(Javaとかは微妙に違うかもしれませんが) Go、Node.js、RubyのPumaなど、APサーバ自体がHTTPで動く、という例もあまり珍しいものではないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問