人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ウェブサーバについて質問です。
1台のサーバ上で、Apacheとnginxの両方をポート80番で動かすことは可能でしょうか?

a.example.com でアクセスするとapacheのバーチャルホストが閲覧でき、
b.example.com でアクセスするとnginxのバーチャルホストが閲覧できる、

みたいなことをしたい思っています。


●質問者: DQNEO
●カテゴリ:コンピュータ インターネット
✍キーワード:Apache example.com nginx アクセス ウェブ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● a-kuma3
●80ポイント ベストアンサー

1台のサーバ上で、Apacheとnginxの両方をポート80番で動かすことは可能でしょうか?

残念だけど、これは無理だよ。

socket の口を開けて待ち構えるようなプログラムでは、ポートを取りあうので、

既に別のプロセスが掴んでるポートを開けられない。


もし、やるとしたら、apache のモジュールを作って、別のポートで口を開けて待ってる nginx に

中継するようにすればできる。

Apache をフロントにした、Tomcat への中継をする mod_jk のようなイメージ。


mod_proxy を使えば、似たようなことはできるね。

http://a.example.com/aaa/ だけを http://a.example.com:8080/ へ転送して、

nginx は 8080 で、待ち構えておく、とか。

http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html


--

(追記)

ごめん、typo を直した。

×ポートを取りある

○ポートを取りあう


ひとつのポートを、複数のプロセスが待ち受けるのは無理なんだけど、

サーバの外の人から見て、80 のポートに出したリクエストを、複数のプロセスが

応答を返すのはできると思うんだ。

先の回答で書いた Apache が 80 を開けてて、別のプロセスに振る、とか、

全く別のプロセスが 80 を開けてて、Apache と nginx に振り分けるとか。

◎質問者からの返答

>残念だけど、これは無理だよ。

>socket の口を開けて待ち構えるようなプログラムでは、ポートを取りあうので、

>既に別のプロセスが掴んでるポートを開けられない。


なるほど。プログラムがポートを占有してしまうイメージですかね?

できないということで、了解しました。

ありがとうございます。

>先の回答で書いた Apache が 80 を開けてて、別のプロセスに振る、とか、

>全く別のプロセスが 80 を開けてて、Apache と nginx に振り分けるとか。

なるほど。

ロードバランサとかリバースプロキシというやつですかね。

nginx自体にそういう機能があるようなので、勉強してみます。


2 ● じゅぴたー
●10ポイント

できません。

1ポートにつき1アプリケーション(1プロセス)というのがTCP/IP通信の取り決めなので、どうすることもできません。

◎質問者からの返答

ありがとうございます。

>1ポートにつき1アプリケーション(1プロセス)というのがTCP/IP通信の取り決め

なるほど、TCP/IPを勉強すればこの辺のことがわかるようになるんですね。


3 ● saijyoh_739
●10ポイント

> 1台のサーバ上で、Apacheとnginxの両方をポート80番で動かすことは可能でしょうか?

できます。

IPアドレスはネットワークインターフェースに一つずつ割り当てる事もできます。

つまり、複数のNICを持ったコンピュータには複数の事なるIPアドレスを設定できます。

また、一つのNICでもIP Alias(別名アドレス)を設定すれば一つのNICに複数のIPアドレスを割り当て使う事も可能です。

サーバで設定している複数のIPアドレスを『Apache』用と『nginx』用で用意すれば両方のアドレスで80番ポートのウェブサーバをサービスする事ができます。

◎質問者からの返答

IPアドレスが複数あれば、それぞれを80番ポートに割り当てることができるんですね!

何となく原理がわかってきました。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ