Nginx'te joker karakterler


25

Nginx'i sunucuma yeni yükledim ve sonuçlardan son derece memnunum, ancak yine de joker sanal ana bilgisayarları nasıl ekleyeceğimi bulamıyorum.

Bu istediğim [dizin] yapısı:

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

Gördüğünüz gibi oldukça basit, ancak yeni bir alt etki alanı için A adındaki bir dizini ekleyerek, anında public_html altında aynı adın alt dizinine işaret edecek etki alanları eklemek istiyorum.

İnternette bazı şeyler var, ancak tam olarak böyle bir şeye rastlamadım.

Herhangi bir yardım çok takdir edilecektir.


Örneğinizde iki farklı ad olduğunda "aynı adın alt dizini" ile ne demek istediğinizi anlamadım: subdomain 1/ x.example.com- netleştirebilir misiniz?
nickgrim

Doğru, çok net üzgünüm. X.example.com alt etki alanım olduğunu varsayalım, dizini / public_html / x olacaktır, ancak hem example.com hem de www.example.com'a / public_html /
rorygilchrist 21.01'de

Yanıtlar:


39

Sana göstereyim

Yapılandırma dosyası

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

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

Test dosyaları

İki test dosyamız var:

$ cat www/pub/index.html 
COMMON

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

Test yapmak

Statik sunucu adları:

$ 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

Ve regexp sunucusu adı:

$ 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

Maalesef çalışmıyor. Tüm alt alanlar sadece public_html'e işaret eder. İşte ikinci sunucu yapılandırma:server{ listen 80; server_name ~^(.*)\.example\.com$ ; location / { root /var/www/public_html/$1; index index.html index.htm index.php; } location ~ \.php$ { root $1; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/public_html/$1$fastcgi_script_name; include fastcgi_params; } }
rorygilchrist

4
"maalesef çalışmıyor" maalesef hiçbir detay vermedi. Detaylar için daima nginx error.log dosyasına bakın. Bu yapılandırmanın nasıl çalıştığını göstermek için cevabımı güncelledim. Nginx versiyonumun 0.8.54 olduğunu görüyorsunuz
Alexander Azarov

Şimdi benim için mükemmel çalıştı.
Claire Furney,

5

Aşağıdaki Nginx yapılandırma dosyası /var/www/vhost/, ilgili günlük dosyalarını dinamik olarak oluştururken ilgili klasöre dinamik olarak yönlendirilen joker karakter ana bilgisayarlarına izin verir .

http://test1.wildcard.com/var/www/vhost/test1
                                                   /var/log/nginx/test1.wildcard.com-access.log                                                    /var/log/nginx/test1.wildcard.com-error.log

http://test2.wildcard.com/var/www/vhost/test2
                                                   /var/log/nginx/test2.wildcard.com-access.log                                                    /var/log/nginx/test2.wildcard.com-error.log

wildcard.conf

server {
  listen 80;
  listen [::]:80;

  #  Match everything except dot and store in $subdomain variable
  #  Matches test1.wildcard.com, test1-demo.wildcard.com
  #  Ignores sub2.test1.wildcard.com
  server_name ~^(?<subdomain>[^.]+).wildcard.com;

  root /var/www/vhost/$subdomain;

  access_log /var/log/nginx/$host-access.log;
  error_log  /var/log/nginx/$host-error.log;
}

Lütfen çözümünüzü açıklayın.
Andrew Schulman

Bu neredeyse varolan bir cevapla aynı görünüyor. Bu ne ekler?
Michael Hampton

1
Biraz daha fazla özgünlük sağlar. Umarım herkese yardımcı olur.
AnthumChris

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.