Nginx conf ile if / else deyimi nasıl yapılır?


9

nginx ile böyle bir şey yapmak mümkün mü?

if ( $http_user_agent = "wget" ){
   server {
      listen      11.11.11.11:1111;
      root        /website1/;
      server_name example.com www.example.com;
else 

   server {
      listen      22.22.22.22:22222;
      root        /website2/;
      server_name example2.com www.example2.com;
}

Harita modülüne bir göz atmak isteyebilirsiniz .
gf_

2
Tuhaf ve anlamsız bir şey yazdın. En baştan başlamaya çalışın, hangi sorunu çözmek istiyorsunuz
Alexey Ten

Yanıtlar:


9

Nginx yeniden yazma modülünün ifyönergeleri vardır (örnekler için bağlantılı belgelere bakın), ancak yoktur else. İçin eşdeğeri bir ile değiştirilmemiş olan her şeyelse olacaktır .if

Sen kullanabilirsiniz ifbir iç server { }ama değil başka bir yol. Sunucuya zaten ihtiyaç duyan bir istekten önce, sizin durumunuzla karşılaştırılmış durumda bile olmazsınız. Orada, içeriği yalnızca kullanıcı aracısı varken (veya değil) sunabilirsiniz wget.

İstediğiniz gibi çalışmayabileceğinden ifiçeride kullanmamanız gerektiğine de dikkat edin location(bkz . Kötülük Var ise ).


3

Verilen formda çalışmaz: HTTP User-Agent'ın test edilmesi, isteğin zaten alındığını gösterir. Bu sadece bazı serverbloklar önceden tanımlanmışsa mümkündür. Başka bir yerde aldığınız bir isteğin User-Agent dizesine bağlı olarak gerçekten yeni sunucular başlatmak istiyor musunuz?

Yalnızca farklı içerik sunmak, isteğin Kullanıcı Aracısı gibi bölümlerine bağlı olarak farklı yollara yeniden yönlendirmek istiyorsanız, örneğin http://nginx.org/en/docs/http/ngx_http_rewrite_module ile mümkündür . html

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.