Nginx'i çoğunlukla birkaç gunicon / mod_wsgi uygulamasının ve tabii ki sunucu statik dosyalarının önünde ters önbellekleme proxy'si olarak kullanıyorum.
Hızlı bir şekilde nginx onaylarımın korunmasının imkansız hale geldiğini; Mesele şu ki, benzer (hatta aynı) bir kaç paternim var ama onu temizlemeyi başaramıyorum.
Sahip olduğum en büyük sorunlardan biri, adlandırılmış konumları bir grup gizliliği gruplandırmanın bir yolu olarak kullanmayı çok isterdim, örneğin.
location @django_modwsgi {
include proxy.conf;
proxy_pass http://127.0.0.1:8080;
}
location @django_gunicorn {
include proxy.conf; # this could also be included directly in the server {} block?
proxy_pass http://gunicorn_builder;
}
NB. Mesele hem gunicorn'a hem de wsgi'ye sahip değil . Bu sadece bir örnek. Bir diğeri:
location @namedlocation_1 {
some cache settings;
some cache_key settings;
ignore some headers;
expires;
proxy_pass
}
location @namedlocation_2 {
other cache settings;
other cache_key settings;
ignore some headers;
expires;
proxy_pass
}
Ancak, adlandırılmış bir konumu aramak için buldum tek yolu:
location /somelocation {
try_files $uri @named_location;
}
Bu zaten doğru gelmiyor, ben do not , ben adlandırılmış bir yerine gitmek isteyen statik dosyalar için göz gitmek nginx istiyorum! Doğrudan adlandırılmış bir yere "çağrı" için bir yolu var mı?
Kuruya gidebileceğimi düşündüğüm bir başka yol da include
...
location /somelocation {
include django_unicorn.conf;
}
Ama bu yapmak için iyi bir yol mu? Çok genel ayarlar (örneğin, proxy ayarları) için uygun görünmüyor, ancak tüm ayarları elde etmek için farklı dosyalar açmak zorunda kalmak çok okunaklı değil.
Ayrıca, bazı durumlarda bir regexp ile birkaç konumu gruplandırabilirim, ancak SADECE sadece aynı ayarları genel ayarları yapabilmek için değil, mantıksal olarak ilgili oldukları zaman da yapmayı seviyorum.
Soru
İyi, DRY nginx yapılandırmaları yazmak için "resmi" bir en iyi uygulama var mı?
Gibi bir kalıp bulmak isterdim:
location / {
common confs
try_files $uri @name_location
}
** ama farklı yerler için nasıl özel durumlar yazarım? **
Sadece conf'ın nadir olmayan kısmı ve @ named_location içindeki ortak konum ile birkaç konum ekleyebilir miyim?
location /1/ {
some cache expire settings;
NOTHING ELSE;
}
location /2/ {
some other cache expire settings;
NOTHING ELSE;
}
location / {
common settings
try_files
}
location @named_location {
other common settings for this named location only
proxy_pass
}
Aynı kaynağa işaret eden farklı bir URL'm olduğunda, tekrar yazabilir miyim?
location /1/ {
rewrite ^ /3/ last;
}
location /2/ {
rewrite ^ /4/ last;
}
location / {
common settings
try_files
}
location @named_location {
other common settings for this named location only
proxy_pass
}
Yoksa hepsi tek bir yerde mi gruplandırılmalı?
location / {
rewrite ^/1/$ /3/ last;
rewrite ^/2/$ /4/ last;
common settings
try_files
}
location @named_location {
other common settings for this named location only
proxy_pass
}
İlgili
E-posta listesinde pek bir şey bulamadım, hatta wikide daha az.
Lütfen bunun NGinx Best Practices sorusu ile aynı olup olmadığını unutmayın - bu çok genel bir soru.
Diğeri daha alakalı: Bu Nginx yapılandırmasını nasıl KURUTABİLİRİM?
map
- ya da en azından hiç farketmemiştim ve bu şekilde kullanabileceğimi düşündüm ... bu konuda biraz daha düşüneyim ve ek sorular / yorumlarınız olup olmadığını görün!