web-dev-qa-db-ja.com

すべてのサブドメインがnginxで同じドキュメントルートを使用するようにする

ドメインの* .confファイルに次のものがあります。

server { 
  listen 80; 
  server_name domain.tld; 
  access_log /var/log/nginx/domain.tld.accesslog; 
  root /var/www/domain.tld; 
  index index.htm index.html;
}

私の質問は...すべてのサブドメインにdomain.tldと同じドキュメントルート(および一般的に同じ設定)を使用させたい場合はどうなりますか?

私はこれを試しました:

server { 
  listen 80; 
  server_name domain.tld; 
  server_name *.domain.tld; 
  access_log /var/log/nginx/domain.tld.accesslog; 
  root /var/www/domain.tld; 
  index index.htm index.html;
}

しかし、リロードした後でも、それは機能しませんでした。何か案は?

1
neubert

これを適切に処理するための 特別な構文 "sugar"があります:

server { 
    listen 80; 
    server_name .domain.tld; # ← this one's sweety
    access_log /var/log/nginx/domain.tld.accesslog; 
    root /var/www/domain.tld; 
    index index.htm index.html;
}

ただし、元アセンブラプログラマが空き時間にCPUサイクルをカウントしている場合は、短い表記の単純さを サーバー名の明示的な長いリスト (10x2 @ cnst)と交換することをお勧めします。 )。

2
cadmi
  server_name domain.tld; 
  server_name *.domain.tld;

上記が問題だと思います。代わりにこれを試してください:

  server_name domain.tld *.domain.tld;
2
cnst