valid_referers dynamic hostname

Maxim Dounin mdounin at mdounin.ru
Mon May 20 18:34:01 UTC 2013


Hello!

On Mon, May 20, 2013 at 02:14:02PM -0400, vlad031 at binkmail.com wrote:

> Hello,
> 
> Thank you for your example Maxim. This is what I've wrote in my config:
> 
> set $temp "$host:$http_referer";
> 
> valid_referers none blocked server_names ~\.google\. ~\.yahoo\. ~\.bing\.
> ~\.ask\. ~\.live\. ~\.googleusercontent.com\. ;
> 
> if ($invalid_referer){
>     set $test A ;
> }
> 
> if ($temp ~* "^(.*):http?://\1") {
>     set $test "${test}B";
> }

Just a side note: this statement isn't needed.  Both http and 
https schemes are allowed by a "https?" in the regular expression 
I provided, "?" makes preceeding character option.

> 
> if ($temp ~* "^(.*):https?://\1") {
>     set $test "${test}C";
> }
> 
> if ($test = ABC) {
>     return 444 ;
> }
> 
> It is always returning 444 ... what am I doing wrong?!

You probably mean to write

    if ($test = A) {
        return 444;
    }

instead, as your initial message suggests you want to allow 
requests where Referer matches Host.

-- 
Maxim Dounin
http://nginx.org/en/donation.html



More information about the nginx mailing list