Bunu başarabilmenize rağmen if
, bu genellikle Nginx belgeleri tarafından önerilmez , çünkü if
diğer direktiflerle iyi oynamaz. Örneğin, POST yalnızca kimliği doğrulanmış kullanıcılar için HTTP Temel Yetkilendirme kullanan GET'in herkes için açık olması gerektiğini varsayalım. Bunun if
ile birleştirilmesi gerekir auth_basic
, ki bu düzgün çalışmaz.
İşte olmadan çalışan bir alternatif if
. İşin püf noktası, "GET" ve "POST" öğelerini yukarı akış adlarının bir parçası olarak kullanmaktır, böylece bunlar değişken ikameyle ele alınabilir:
http {
upstream other_GET {
server ...;
}
upstream other_POST {
server ...;
}
server {
location /service {
proxy_pass http://other_$request_method;
}
}
}
Bunu GET dışında her şey için HTTP Temel Kimlik Doğrulaması ile birleştirmek için bir limit_except
blok eklemeniz yeterlidir:
...
location /service {
proxy_pass http://other_$request_method;
limit_except GET {
auth_basic ...;
}
}
...