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
|