Отдельные поддомены для фотогалереи на nginx

Fader

Постоялец
Регистрация
7 Май 2008
Сообщения
66
Реакции
15
Есть нужда вынести галерею изображений на отдельные поддомены (которые будут пропускаться через CDN).
Сейчас все работает на
Код:
server_name .someblog1.ru;
что позволяет всяким нехорошим ботам и парсерам картинок обращаться к моим блогам по любым именам вида *. someblog1.ru что очень плохо. Мне нужно чтобы с любого поддомена были доступны любые изображения с папки /gallery не более.

В голове крутится один вариант, но не хватает скиллов чтобы это заработало:
Код:
# основной vhost блога
 
server {
listen 80;
server_name someblog1.ru;
 
root /var/www/someblog1.ru;
index index.php index.html index.htm
...
}

Код:
 # vhost для раздачи изображений из папки /gallery на поддоменах
 
server {
listen 80;
server_name cdn?.someblog1.ru;
 
location ~* ^/gallery/\(.*).(?:ico|css|js|gif|jpe?g|png)$ {
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
}

Чтобы было понятно какой мне требуется location - примеры адресов изображений:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
 
Всё проще, сделай алиас папки /gallery на все домены...
Так сделано у ISPmanager на папку /manager

Т.е. при обращении с любого поддомена в папку /gallery будет открываться галерея не зависимо от того, что в папке на самом деле и есть ли она.
 
Всё проще, сделай алиас папки /gallery на все домены...
Так сделано у ISPmanager на папку /manager

Т.е. при обращении с любого поддомена в папку /gallery будет открываться галерея не зависимо от того, что в папке на самом деле и есть ли она.
а пример можешь показать?
не очень понял...
 
Это кусок конфига. xxx - скрытые данные пользователя, нужно заменить на свои данные, 11.22.33.44 - некий IP.
server {
server_name xxx.org.ua Для просмотра ссылки Войди или Зарегистрируйся
listen 11.22.33.44;
location ~* ^.+.(jpg|jpeg|gif|png|svg|js|css|html|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
root /var/www/xxx/data/www/xxx.org.ua;
access_log /var/www/nginx-logs/xxx isp;
access_log /var/www/httpd-logs/xxx.org.ua.access.log ;
error_page 404 = @fallback;
}
location / {
proxy_pass Для просмотра ссылки Войди или Зарегистрируйся
proxy_redirect Для просмотра ссылки Войди или Зарегистрируйся /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
location ^~ /manimg/ {
alias /usr/local/ispmgr/skins/;
}
}
Теперь все обращения на xxx.org.ua/manimg/ будут попадать в папку /usr/local/ispmgr/skins/ Конечно, любая панель управления будет препятствовать такому конфигу, так что реально сделать только руками, либо править шаблоны. Конкретно этот конфиг собран из 2 кусков стандартного конфига ISPmanager... Ну и себя палить не хочется, покажу на конкуренте :D Для просмотра ссылки Войди или Зарегистрируйся - пример работы...

Ну вот как-то так...

P.s. сори, отступы побились...
 
мне кажется ты немного не понял. мне нужно научить nginx отвечать с любого поддомена при обращениях к фоткам, находящимся в $webroot/gallery. во всех остальных случаях - запретить.

т.е. так: Для просмотра ссылки Войди или Зарегистрируйся - отвечает (200)
Для просмотра ссылки Войди или Зарегистрируйся - отвечает (200)
Для просмотра ссылки Войди или Зарегистрируйся - отвечает (200)

а так:Для просмотра ссылки Войди или Зарегистрируйся - не найдено (404)
Для просмотра ссылки Войди или Зарегистрируйся - не найдено (404)
Для просмотра ссылки Войди или Зарегистрируйся - не найдено (404)

а как мне поможет:
location ^~ /manimg/ {
alias /usr/local/ispmgr/skins/;

в этом?
 
Ок, тогда немнодо доработаем вариант:

Создаём домен, к нему добавляем этот кусочек с алисом в папку поддомена...
Создаём поддомен, к нему *.домен, в нём удаляем все папки и делаем папку gallery.

На выходе - на всех поддоменах будет работать галерея, на основном домене так же будет доступна галерея... Если обратиться не к картинке - будет выведена 404, т.к. файла нету... Ну и запретить листинг директорий, прописать принудительный индексный файл index.html, которого нет = 404 в папке...

И не надо регулярок... У тебя в папке с галереей кроме картинок ничего не лежит, а значит будут 404 автоматом отдаваться, если что-то другое запросить...

Либо я в конец не понял задачу...
 
Назад
Сверху