снова valid_referers & ssl

Igor Sysoev is at rambler-co.ru
Thu Mar 10 22:16:25 MSK 2005


On Thu, 10 Mar 2005, Artem Danilenko wrote:

> Проблема в следущем, есть два сервер оба отдают статику(один еще
> динамику через прокси) у обих стоит проверка valid_referers в обоих
> случаях *.test.com/, на сервер который отдает только статику если
> рефер стоит просто домен test.com то выдается 403 ошибка, сначала я
> подумал просто нету такова имени в server_name в описании сервер, но
> потом заметил что если стоит рефер www.test.com то все нормально,
> конфигурации серверов и куски лога приведены ниже...

В первом сервере test.com не является правильным реферером, так как
его нет в server_name и он не попадает под *.test.com/.

Нужно так:
     valid_referers  none  test.com/  *.test.com/;
server_names в данном случае не нужен, так как download.test.com попадает
под *.test.com/.

> сегодня поробовал использовать в nginx, ssl на тестовом сервере и
> заметил что первый запрос обычно выдает ошибку 400
>
> 10.10.4.64 - - [10/Mar/2005:15:27:54 +0500] "" 400 0 "-" "-"
> 10.10.4.64 - - [10/Mar/2005:15:28:05 +0500] "GET / HTTP/1.1" 200 480 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; SV1; .NET CLR 1.1.432
> 2)"

При получении тестового сертификата MSIE закрывает соединение и спрашивает
у пользователя подтверждение на приём сертификата. Поэтому и 400.
А Мозилла, например, соединение не закрывает и после получения подтвержения
работает по этому же соединению.

> первый сервер:
>    server {
>        listen  80;
>        server_name   download.test.com;
>
>        location / {
>
>        valid_referers  none  server_names  *.test.com/;
>        if ($invalid_referer) {
>                return   403;
>        }
>
>        root /www/download.test.com;
>        access_log logs/static/test.log download;
>        expires      30d;
>        }
>    }


> второй сервер
>    server {
>        listen  80;
>        server_name   test.com www.test.com;
>
>        access_log  logs/test.log;
>
>    location / {
>        proxy_pass  http://127.0.0.1/;
>        client_max_body_size       80m;
>        client_body_buffer_size    128k;
>        proxy_connect_timeout      90;
>        proxy_send_timeout         90;
>        proxy_read_timeout         9m;
>        proxy_preserve_host        on;
>        proxy_set_x_real_ip        on;
>        proxy_add_x_forwarded_for  on;
>        proxy_header_buffer_size   4k;
>        proxy_buffers              4 32k;
>        proxy_busy_buffers_size    64k;
>        proxy_temp_file_write_size 64k;
>        proxy_temp_path            /tmp/nginx;
>      }
>        location ~* ^.+\.(jpg|jpeg|gif|css|htm|html|zip|rar|swf|txt|exe|mpg|mp3|ico|avi|png|js|pdf)$ {
>
>        valid_referers  none  server_names  *.test.com/;
>        if ($invalid_referer) {
>                return   403;
>        }
>
>        root /www/test.com;
>        access_log logs/test-static.log download;
>        expires      30d;
>        }
>    }


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list