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

Тема в разделе "Администрирование серверов", создана пользователем Fader, 8 окт 2012.

Модераторы: mefish, stooper
  1. Fader

    Fader Создатель

    Регистр.:
    7 май 2008
    Сообщения:
    49
    Симпатии:
    5
    Есть нужда вынести галерею изображений на отдельные поддомены (которые будут пропускаться через 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 - примеры адресов изображений:
    http://cdn1.someblog.ru/gallery/dir1/thumbs/thumbs23.jpg
    http://cdn.someblog.ru/gallery/dir3/dir2/image43.jpg
    http://cdn2.someblog.ru/gallery/dir4/image3323.jpg
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.035
    Симпатии:
    2.036
    Всё проще, сделай алиас папки /gallery на все домены...
    Так сделано у ISPmanager на папку /manager

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

    Fader Создатель

    Регистр.:
    7 май 2008
    Сообщения:
    49
    Симпатии:
    5
    а пример можешь показать?
    не очень понял...
     
  4. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.035
    Симпатии:
    2.036
    Это кусок конфига. xxx - скрытые данные пользователя, нужно заменить на свои данные, 11.22.33.44 - некий IP.
    Теперь все обращения на xxx.org.ua/manimg/ будут попадать в папку /usr/local/ispmgr/skins/ Конечно, любая панель управления будет препятствовать такому конфигу, так что реально сделать только руками, либо править шаблоны. Конкретно этот конфиг собран из 2 кусков стандартного конфига ISPmanager... Ну и себя палить не хочется, покажу на конкуренте :D http://ispserver.com/manimg/ - пример работы...

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

    P.s. сори, отступы побились...
     
  5. Fader

    Fader Создатель

    Регистр.:
    7 май 2008
    Сообщения:
    49
    Симпатии:
    5
    мне кажется ты немного не понял. мне нужно научить nginx отвечать с любого поддомена при обращениях к фоткам, находящимся в $webroot/gallery. во всех остальных случаях - запретить.

    т.е. так: http://cdn1.someblog.ru/gallery/dir1/thumbs/thumbs23.jpg - отвечает (200)
    http://cdn.someblog.ru/gallery/dir3/dir2/image43.jpg - отвечает (200)
    http://cdn2.someblog.ru/gallery/dir4/image3323.jpg - отвечает (200)

    а так: http://cdn3.someblog.ru - не найдено (404)
    http://cdn.someblog.ru/image.jpg - не найдено (404)
    http://cdn1.someblog.ru/wp-content/themes/333.jpg - не найдено (404)

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

    в этом?
     
  6. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.035
    Симпатии:
    2.036
    Ок, тогда немнодо доработаем вариант:

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

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

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

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