Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Веб-программирование > Общее

Общее Веб-разработка в целом, идеи, проекты...

Ответ
 
Опции темы
Старый 20.01.2015, 01:16   #1
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
nginx rewrite

имеется
location /{

rewrite   /(res|scenes)/([0-9]+)/(.+\.swf)$  /$1/$3?$2  last;
rewrite   /([0-9]+)/(Web.swf)$  /$2?$1  last;
rewrite   /Web([0-9]+).swf$  /Web.swf?$1  last;
rewrite   /get/(.*)$  /get.php?url=$1  last;

	index  index.php index.html;
	location ~ \.php$ {
		fastcgi_keep_conn on;
    		fastcgi_pass   127.0.0.1:9000;
    		fastcgi_index  index.php;
    		fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    		include        fastcgi_params;
	}

	location ~* \.(jpg|jpeg|gif|png|ico|css|zip|rar|pdf|xml|js)$ {

                error_page 404 = 404;
	}
}
почему может не срабатывать вот это правило?
rewrite   /get/(.*)$  /get.php?url=$1  last;
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 20.01.2015, 03:08   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: nginx rewrite

При каких ссылках конкретно не срабатывает, при всех?
Выглядят rewrite'ы грустно на самом деле, как буд-то кто-то писал endpoint'ы не думая..
Да и так понимаю ты сервишь всякие ресурсы и файлы используя php?
Если там скрипт тупо выдаёт файлы, то в разы лучше посмотреть в сторону try_files директивы в nginx, чтобы избежать не нужного стрима данных через php сокеты, что нагружает CPU и RAM зазря.

Также упрости:
rewrite /([0-9]+)/Web\.swf$ /$2?Web.swf last;
(Offline)
 
Ответить с цитированием
Старый 20.01.2015, 07:23   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: nginx rewrite

Сообщение от moka Посмотреть сообщение
При каких ссылках конкретно не срабатывает, при всех?
Выглядят rewrite'ы грустно на самом деле, как буд-то кто-то писал endpoint'ы не думая..
Да и так понимаю ты сервишь всякие ресурсы и файлы используя php?
Если там скрипт тупо выдаёт файлы, то в разы лучше посмотреть в сторону try_files директивы в nginx, чтобы избежать не нужного стрима данных через php сокеты, что нагружает CPU и RAM зазря.
Я писал эти эндпоинты) Основная задача - сделать статические ссылки. Вся суть в том, что, когда я заливаю обновление на хостинг, то при не изменном названии файла меняется его crc сумма (ее выдает Unity). Чтобы избежать кеширования браузером, я передаю в ссылке эту crc сумму. Все мои файлы на хостинге лежат в папке /res сейчас.

По поводу не работающего. Не работает так:
https://steamcraft.landrays.com/get/http%3A%2F%2Fwww.biletomsk.ru%2F_files%2Fnews%2Fimages%2Fc67d52407cf4b16e95d41e7d59cb52a3.jpg
Работает так
https://steamcraft.landrays.com/get.php?url=http%3A%2F%2Fwww.biletomsk.ru%2F_files%2Fnews%2Fimages%2Fc67d52407cf4b16e95d41e7d59cb52a3.jpg
Скачиваю некоторые аватарки через кроссдомен используя php скрипт на своем сервере. статическая ссылка необходима, чтобы файл закешировала CDN (cloudflare у нас сейчас).

Сообщение от moka Посмотреть сообщение
Также упрости:
rewrite /([0-9]+)/Web\.swf$ /$2?Web.swf last;
Этот вариант я тоже пробовал и уже не использую как и свой, они создают одну проблему - смену адреса файла. Именно для этого файла это создает проблему с не сохранением PlayerPrefs при изменении файла.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 20.01.2015, 07:51   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: nginx rewrite

Простейший способ избежать кеширования — каждый раз добавлять к ссылке какой-нибудь левый параметр типа &timestamp=нынешнеевремя
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 20.01.2015, 07:59   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: nginx rewrite

Мне нужно кеширование и нужно перекачать изменившийся файл.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 20.01.2015, 14:37   #6
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Ответ: nginx rewrite

В игре чатика нет? А то в бою хочется написать что-нибудь булчанам, а нельзя
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Старый 20.01.2015, 15:28   #7
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: nginx rewrite

Добавь ^ ко всем rewrite вначале строки.
rewrite ^/get/(.*)$ /get.php?url=$1 last
При изменении файла меняется его modified date в системе? Если да, то ты можешь сделать так:
location / {
    
try_files $uri $uri/ =404;
    
expires modified 365d;

Это будет учитывать кеш и обновленный файл, заголовки будут посланы таким образом, что броузер все равно будет делать запрос на файл с заголовком даты своего кеша, если сервер считает что кеш на клиенте идентичен то шлет 304 обрывая соединение (по сути запрос только обменяет заголовки), и клиент грузит файл с кеша.
Такой метод стабильно работает для кеша и решил мне много проблем с очень похожими ситуациями как у тебя.

Относительно аватарок, можно вообще сделать proxy на CDN, и если файл там не найден, но редиректнит обратно на ссылку с запросом генерации аватарки в твоем скрипте. Скрипт сгенерит аватарку выдаст клиенту и паралельно зальет ее на CDN. И следующий запрос получит ее с CDN сразу.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (20.01.2015)
Старый 20.01.2015, 16:16   #8
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: nginx rewrite

Попробую с ^ спасибо, а по поводу заголовков и expires - я использую cloudflare, все запросы идут через него, его кэш может обновится через год, если я такой expires поставлю.

UPD: с ^ тоже не срабатывает
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 20.01.2015, 16:32   #9
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: nginx rewrite

Сообщение от Igor Посмотреть сообщение
В игре чатика нет? А то в бою хочется написать что-нибудь булчанам, а нельзя
Будет, вообще сейчас под окном игры есть окошко с комментами
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 20.01.2015, 16:49   #10
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: nginx rewrite

Сообщение от pax Посмотреть сообщение
Попробую с ^ спасибо, а по поводу заголовков и expires - я использую cloudflare, все запросы идут через него, его кэш может обновится через год, если я такой expires поставлю.
modified на то и создан, чтобы он все равно делал запрос и получал заголовок не смотря на наличие кеша, и только потом делал выводы - юзать кеш или грузить новый файл.
Также я не знаю как CloudFlare отвечает с заголовками, но думаю при заливке на него, ты можешь сам установить нужные Meta данные для Modified кеширования тоже.
(Offline)
 
Ответить с цитированием
Старый 20.01.2015, 17:16   #11
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: nginx rewrite

т.е. 1000 пользователей буду запускать игру и качать 100 файлов и на каждый будет идти запрос user=>cloudflare=>server=>cloudflare=>user пусть даже для валидации? Да нафиг надо. Мне всего то надо сделать статическую ссылку на скрипт.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 20.01.2015, 22:33   #12
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: nginx rewrite

Сообщение от pax Посмотреть сообщение
т.е. 1000 пользователей буду запускать игру и качать 100 файлов и на каждый будет идти запрос user=>cloudflare=>server=>cloudflare=>user пусть даже для валидации? Да нафиг надо. Мне всего то надо сделать статическую ссылку на скрипт.
Сейчас, если нету картинки:
nginx > php (cpu, ram) > check file > API request > download > save > serve
Если есть картинка:
nginx > php (cpu, ram) > check file > serve
?

Я предлагаю:
Если нету картинки:
nginx > perm_redirect(cdn) > 404, temp_redirect(php) > php > API request > download > save > redirect_back
Если есть:
nginx > perm_redirect(cdn)

Таким образом у тебя php будет только качать картинку и заливать, и проверка будет не на php. Для того чтобы сервить картинку, что будет 99.8% запросов, у тебя вообще никакой нагрузки на сервер не будет.
А сейчас у тебя php должен проверять наличие файла, если он на cdn ты как проверяешь, запрос из php делаешь? Тогда у тебя IO и потоки из pool'а тупо отстаивают.

Такой подход имеет минимальную нагрузку на твой сервер, иначе у тебя пользы от CDN вообще никакой, т.к. ты все равно сервишь из PHP тем более через прокси. Вообще ноль пользы от php.
Используя Permanent редирект (если картинка под ID хранится и никогда не изменится ID картинки), то это ваще броузером будет resolve'ится, и даже сервер твой трогаться не будет для картинок. В таком случае есть реальная польза от CDN.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (21.01.2015)
Старый 21.01.2015, 01:01   #13
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: nginx rewrite

Я если честно ничего не понял, придется много гуглить. Но наверное не в ближайшие дни. Потом к этой задаче вернусь.

Моя логика такая - я обращаюсь через CDN на свой сервер по url для скачки картинки. php скачивает картинку, отдает cdn. Если ссылка статическая, то cdn ее кеширует и отдает игроку. В следующий раз по этой ссылке cdn не будет запрашивать файл с моего сервера. Как-то так... Статической ссылку пока не вышло сделать. Не пойму почему не работает.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 21.01.2015, 01:32   #14
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: nginx rewrite

Сообщение от pax Посмотреть сообщение
Я если честно ничего не понял, придется много гуглить. Но наверное не в ближайшие дни. Потом к этой задаче вернусь.

Моя логика такая - я обращаюсь через CDN на свой сервер по url для скачки картинки. php скачивает картинку, отдает cdn. Если ссылка статическая, то cdn ее кеширует и отдает игроку. В следующий раз по этой ссылке cdn не будет запрашивать файл с моего сервера. Как-то так... Статической ссылку пока не вышло сделать. Не пойму почему не работает.
Ты описал именно то что я и описал во втором варианте :D
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (21.01.2015)
Старый 21.01.2015, 09:10   #15
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: nginx rewrite

Ну так у меня и устроено. Осталось решить проблему со статической ссылкой. Вообще это можно настроить в панели cloudflare... наверное так и сделаю.

Cloudflare работает через dns, так что я просто указал для каких доменов включить трафик через него и все. Работаю со своим доменом как и работал, у него просто ip адрес сменился и весь трафик идет через cloudflare. Указал агрессивное кеширование на 1 год ))

UPD: неужели наконец счастье) Жаль на домен всего три правила можно на бесплатном аккаунте
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 15:42.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com