Bunu başarabilmenize rağmen if, bu genellikle Nginx belgeleri tarafından önerilmez , çünkü ifdiğ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 ifile 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_exceptblok eklemeniz yeterlidir:
...
location /service {
proxy_pass http://other_$request_method;
limit_except GET {
auth_basic ...;
}
}
...