同じポート・異なるドメインで処理を分けたい

投稿 2022年10月30日

更新 2022年10月30日

専門用語の数:

同じポート・異なるドメインで処理を分けたい

~ 目次 ~

やりたいこと

ドメインによって振り分け

仕組み

まとめ

やりたいこと

こんなわがままを実現します。

有名どころの「Apache」「nginx」で解説します。

ドメインによって振り分け

実は同じポートを複数定義可能です。

シンプルに設定を2つ用意して、ドメインを書き分けるだけです。

Apache

Listen 80 <VirtualHost *:80>     # ドメイン指定     ServerName test1.com     # お好みの処理... </VirtualHost> <VirtualHost *:80>     # ドメイン指定     ServerName test2.com     # お好みの処理... </VirtualHost>

nginx

server {     # 開放ポート     listen 80;     listen [::]:80;     # ドメイン指定     server_name test1.com;     # お好みの処理... } server {     # 開放ポート     listen 80;     listen [::]:80;     # ドメイン指定     server_name test2.com;     # お好みの処理... }

仕組み

ドメイン一致に誘導

Apacheもnginxも、同じポート設定が定義してある場合、

「ドメインが一致する」設定に誘導されます。


完全一致のため、サブドメイン(www.*)等は別途定義が必要です。


ただし、ドメインが一致する設定がない場合の挙動は、

Apacheとnginxでは少し異なります。

Apacheでドメインが一致しない場合

ドメインごとに用意した「VirtualHost」設定。

その定義内、どこにも一致するドメインがなかった場合、

一番最初に定義された「VirtualHost」に入るようになっています。


一致しなかった場合、ダミーページを表示させたい場合は、

ダミーの設定を一番最初に定義してあげましょう。


ダミーのため、「ServerName」は何でも構いません。

Listen 80 <VirtualHost *:80>     # ダミードメイン指定     ServerName dummy     # お好みの処理... </VirtualHost> <VirtualHost *:80>     # 本命ドメイン指定     ServerName main.com     # お好みの処理... </VirtualHost>

nginxでドメインが一致しない場合

nginxは一致しなかった場合の処理が、用意されています。


「listen」でポートを指定した後ろに

「default_server」を指定します。


「server_name」は「_」を指定しておきます。


Apacheのように定義順は関係ありません!

server {     # 開放ポート     listen 80;     listen [::]:80;     # 本命ドメイン指定     server_name main.com;     # お好みの処理... } server {     # 開放ポート     listen 80 default_server;     listen [::]:80 default_server;     # ダミードメイン指定     server_name _;     # お好みの処理... }

まとめ

同じポート・異なるドメイン、で処理を分ける方法の紹介でした。

ちゃんといろんな人のやりたいことを実現できるサーバ、すごいですよね。


以上、ここまで見ていただきありがとうございます。

皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。

コメント一覧

コメントがまだありません

コメントを投稿してみる

コメント(必須※500文字以内)

お名前(必須※30文字以内)

※日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)