Nginx negating condition/ if else

24,701

Try to make one setting default and other one turned on by condition:

expires max;

valid_referers none blocked something.com;
if ($invalid_referer) {
    rewrite ^ /leech.jpg;
    expires epoch;
}
Share:
24,701

Related videos on Youtube

Francisco Javier Banos Lemoine
Author by

Francisco Javier Banos Lemoine

Updated on September 18, 2022

Comments

  • Francisco Javier Banos Lemoine
    Francisco Javier Banos Lemoine over 1 year

    I've came into situation where I cannot find a way around it, neither with tons googling.

    valid_referers none blocked something.com;
    if ($invalid_referer) {
        rewrite ^ /leech.jpg;
        expires epoch;
    }
    

    Everything works fine so far, but I want to create if referer is valid to expire max; I couldn't find how to negate if statement or create else in nginx configuration. I tried:

    else {
        expires max;
    }
    

    or (notice exclamation mark)

    if(!$invalid_referer){
         expires max;
    }
    

    but it doesn't work as it works in almost everywhere.

  • Francisco Javier Banos Lemoine
    Francisco Javier Banos Lemoine about 12 years
    if ($invalid_referer = 0) is working for me, thanks to guys from #nginx. But your solution is even better