web-dev-qa-db-ja.com

Nginxのワイルドカードvhosts

サーバーにNginxをインストールしたばかりで、その結果には非常に満足していますが、ワイルドカード仮想ホストを挿入する方法がわかりません。

これは私が欲しい[ディレクトリ]構造です:

-- public_html (example.com)
---subdoamin 1 (x.example.com)
---subdomain 2 (y.example.com)

ただし、ごく基本的なことがわかるので、新しいサブドメインのAレコードを追加するだけでドメインを追加できるので、public_htmlの下にある同じ名前のサブディレクトリをすぐに参照できます。

ウェブ上にはいろいろありますが、私はこのようなものに出くわしていません。

どんな助けでも大歓迎です。

27
rorygilchrist

お見せします。

設定ファイル

server {
  server_name example.com www.example.com;
  root www/pub;
}

server {
  server_name ~^(.*)\.example\.com$ ;
  root www/pub/$1;
}

テストファイル

2つのテストファイルがあります。

$ cat www/pub/index.html 
COMMON

$ cat www/pub/t/index.html 
T

テスト中

静的サーバー名:

$ curl -i -H 'Host: example.com' http://localhost/
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Wed, 23 Mar 2011 08:00:42 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Wed, 23 Mar 2011 07:56:24 GMT
Connection: keep-alive
Accept-Ranges: bytes

COMMON

$ curl -i -H 'Host: www.example.com' http://localhost/
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Wed, 23 Mar 2011 08:00:48 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Wed, 23 Mar 2011 07:56:24 GMT
Connection: keep-alive
Accept-Ranges: bytes

COMMON

そして正規表現サーバー名:

$ curl -i -H 'Host: t.example.com' http://localhost/
HTTP/1.1 200 OK
Server: nginx/0.8.54
Date: Wed, 23 Mar 2011 08:00:54 GMT
Content-Type: text/html
Content-Length: 2
Last-Modified: Wed, 23 Mar 2011 07:56:40 GMT
Connection: keep-alive
Accept-Ranges: bytes

T
43

これが私が処理した方法です Nginxを使用した仮想ホスト

server_name ~^(?<vhost>.*)$;
root /srv/www/$vhost;
access_log /var/log/nginx/$vhost.access.log;

親フォルダー内のワイルドカードサブドメイン が間違っている/誤解している理由がわかりません。

1
hendry