Проблема в следущем, есть два сервер оба отдают статику(один еще
динамику через прокси) у обих стоит проверка 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;
}
}