ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Перезапись Referer по условию


  • To: nginx-ru@xxxxxxxxx
  • Subject: Перезапись Referer по условию
  • From: Alex Domoradov <alex.hha@xxxxxxxxx>
  • Date: Wed, 25 Sep 2013 22:41:11 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=dk/JgMUxVkuTNIQrvKIHRnyAOslJo+Jbx+dJeZ0WeMY=; b=Kcaq6g7D2ObJMd9xSGLWmATSCwF8p/2Tfeuys0JKbd8K+JHrOMLK6IbV5JAisyC0J1 TR6ZZuQvG+toaXKrtU/U1xX7uPoapuAci5Iyi9wZzXdzjK5TnspyX9JieeHDlcQZ4D3d oQF4NXjHyZ4nBaQbmxgcaLET0h0Dyk2HDjdvdp+5SlAjMPfu1m+P/h0WILSGaMivx4m5 jUxdUqy7I5yRGeR090OO2kb5psaN3lDAMTThAKp2iVBo+kpQQp307ktgVczSo6UuTNc8 PYUBAAa5bpThjY9vEoiSVjZ718L2sblaP3Ym13Qu/MXdtDMBEJKhxO5GdmYDVgYcYowh LCnQ==

Привет всем, столкнулся с необходиомстью тестирования подключаемых
шрифтов на сайтах через сервисы typekit.com и fonts.com

Суть сводится к подключению в html коде js скрипта

fonts.com
<script type="text/javascript"
src="http://fast.fonts.net/jsapi/8163d577-49e6-9656-88c9-d8609ff327a1.js";></script>

typekit.com
<script type="text/javascript" src="//use.typekit.net/0cd8xtd.js"></script>

В админке каждого из сервисов прописывается для каких доменов будет
отдаваться данный шрифт, проверка производится по полю Referer.

И вот собственно возникла проблема, необходимости тестирования данных
сайтов из 3х разных мест, при этом в админке должен быть указан только
один реальный домен.

Что на данный момент: каждый раз приходится заходить в админку соотв
сервиса и менять домен. Часто клиент не дает доступов и приходится
дергать его, что очень неудобно.

Хотелось бы избежать подобной ситуации, и в настройках сервисов
прописать только localhost. Для этого я завернул на шлюзе все
обращения к fast.fonts.net (93.184.220.188) и use.typekit.net
(93.184.220.20) на nignx.

# iptables -I PREROUTING -p tcp -s 192.168.0.0/16 -d 93.184.220.20
--dport 80 -j DNAT --to-destination 192.168.1.1:80

# iptables -I PREROUTING -p tcp -s 192.168.0.0/16 -d 93.184.220.188
--dport 80 -j DNAT --to-destination 192.168.1.1:80

Внутри локальной сети подняты два внутр домена, typekit.example.net и
fonts.example.net и соотв следующий конфиг nginx

server {
    listen       192.168.1.1:80;
    server_name  _;

    location / {

            if ($http_referer ~ '^http://typekit.example.net/') {
                set $referer http://localhost;
                proxy_pass http://93.184.220.20:80;
            }

            if ($http_referer ~ '^http://fonts.example.net/') {
                set  $referer http://localhost;
                proxy_pass http://93.184.220.188:80;
            }

            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Referer $referer;
    }
}

И все бы классно, за исключением двух моментов:

1. Многие сайты используют эти сервисы для размещения css, например,
wordpress.org, fonts.com, typekit.com и т.д. Хотелось бы для всех
сайтов, кроме typekit.example.net и fonts.example.net пропускать
запросы без модификаций

2. Необходимо как то сделать исключения для наших внешних тестовых
серверов (с внешними доменными именами). Т.е. например, если
http_referer = project.domain.com, то мы ничего не делаем с запросом,
а просто перенаправляем на соотв сервер (typekit.com или fonts.com)

Читал, что http://wiki.nginx.org/IfIsEvil крайне не желательно
использовать if в Location, может есть более элегантный способ решить
данную задачу?
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.