Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 18

Тема: nginx и авто поддомены

  1. #1
    Member
    Регистрация
    13.06.2009
    Сообщений
    88

    По умолчанию nginx и авто поддомены

    ISPmanager-Lite 4.3.51.1
    FreeBSD-8.0 (amd64)

    nginx -V
    Код:
    nginx version: nginx/0.8.52
    configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I /usr/local/include' --with-ld-opt='-L /usr/local/lib' --conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx-error.log --user=www --group=www --http-client-body-temp-path=/var/tmp/nginx/client_body_temp --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp --http-proxy-temp-path=/var/tmp/nginx/proxy_temp --http-scgi-temp-path=/var/tmp/nginx/scgi_temp --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp --http-log-path=/var/log/nginx-access.log --with-http_stub_status_module --with-pcre
    Код:
    	server {
    		listen xxx.xxx.xxx.xxx:80;
    		server_name domain.ru www.domain.ru *.domain.ru;
    		rewrite ^(/manager/.*)$ https://$host$1 permanent;
    		location ~* ^/(webstat/|awstats|webmail/|myadmin/|manimg/) {
    			proxy_pass http://xxx.xxx.xxx.xxx:8080;
    			proxy_redirect http://domain.ru:8080/ /;
    			proxy_set_header Host $host;
    			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    			proxy_set_header X-Real-IP $remote_addr;
    		}
    		location / {
    			proxy_pass http://xxx.xxx.xxx.xxx:8080;
    			proxy_redirect http://domain.ru:8080/ /;
    			proxy_set_header Host $host;
    			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    			proxy_set_header X-Real-IP $remote_addr;
    		}
    		location ~* ^/published/ {
    			proxy_pass http://xxx.xxx.xxx.xxx:8080;
    			proxy_redirect http://domain.ru:8080/ /;
    			proxy_set_header Host $host;
    			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    			proxy_set_header X-Real-IP $remote_addr;
                            proxy_read_timeout 1800;                       
    		}
    		location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
    			root /home/user/data/www/domain.ru;
    			access_log /home/httpd-logs/domain.ru.access.log;
    			error_page 404 = @fallback;
    		}
    		location @fallback {
    			proxy_pass http://xxx.xxx.xxx.xxx:8080;
    			proxy_set_header Host $host;
    			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    			proxy_set_header X-Real-IP $remote_addr;
    		}
    При запросе статики с domain.ru или www.domain.ru все работает, но если запрос идет с другого поддомена (xxx.domain.ru) в nginx-error.log пишутся ошибки cледующего вида:
    "/home/user/data/www/domain.ru/file.jpg" failed (2: No such file or directory), client: yyy.yyy.yyy.yyy, server: domain.ru, request: "GET /1.jpg HTTP/1.1", host: "domain.ru"

    Т.е. получается что статику с поддоменов обрабатывает Apache. из-за того что переменная root имеет неверное значение. Подскажите как сконфигурировать правильно?


    Nginx работа с автоподдоменами и отключение пользователей

    Nginx теперь корректно отдает статику при включенных автоподдоменах.Добавлен новый путь nginx-fallback (поумолчанию он равен @fallback). Значение поумолчанию не подходит для старых nginx (версия ниже 0.5) и оставлено исключительно для совместимости с предыдущими версиями ISPmanager. Если при отключении пользователя неправильно отдается страница ошибки, рекомендуем заменить его на /fallback.
    Насколько я понимаю это значит что должны работать авто поддомены "из коробки".

  2. #2
    Member
    Регистрация
    02.02.2011
    Сообщений
    41

    По умолчанию

    ну а папка или файл (/home/user/data/www/domain.ru/file.jpg) существует?

  3. #3
    Member
    Регистрация
    13.06.2009
    Сообщений
    88

    По умолчанию

    Папка то существует, а вот файла там нет, т.к. как файл лежит папке поддомена (xxx.domain.ru).

    Ошибка в том, что в переменной root в nginx находится путь к основному домену /home/user/data/www/domain.ru вместо /home/user/data/www/xxx.domain.ru

  4. #4
    Member
    Регистрация
    02.02.2011
    Сообщений
    41

    По умолчанию

    так у вас рут указывает
    Код:
    location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
    			root /home/user/data/www/domain.ru;
    Код:
        server_name example.com *.example.com;
        set $subdomain "www";
        if ($host ~* ^([a-z0-9-\.]+)\.example.com$) {
            set $subdomain $1;
        }
        if ($host ~* ^www.example.com$) {
            set $subdomain "www";
        }
    root path/to/website/example.com/$subdomain;
    где $subdomain - содержит в себе имя поддомена

  5. #5
    Member
    Регистрация
    13.06.2009
    Сообщений
    88

    По умолчанию

    так у вас рут указывает
    Я знаю что он не туда указывает, в этом собственно и проблема.

    За решение большое спасибо. Правда для моей структуры папок оно без изменений не подойдет =)

    Есть еще такой вариант:
    Код:
    			if ( $host ~* ^((.*).domain.ru)$ ) {
    				root /home/user/data/www/$1;
    			}
    Меня интересует почему панель сама не добавляет по умолчанию необходимый код в nginx.conf чтобы обеспечить правильную отдачу статики с "авто поддоменов". В changlelog такая возможность заявлена. Это я где-то накосячил или по умочанию у всех не работает?
    Последний раз редактировалось mephistophel; 01.04.2011 в 17:18.

  6. #6
    Senior Member
    Регистрация
    26.06.2009
    Сообщений
    767

    По умолчанию

    www домены >> редактировать >> автоподдомены - в отдельной директории

    В changlelog есть и оно работает, но для этого необходимо включить!

  7. #7
    Member
    Регистрация
    13.06.2009
    Сообщений
    88

    По умолчанию

    Включено.

    Сами "авто поддомены" работают. И статика загружается - только делает это apache через @fallback.

    WebGraf, не могли бы вы привести Ваш код из nginx.conf домена в котором активированы "авто поддомены".

  8. #8
    Senior Member
    Регистрация
    16.10.2010
    Сообщений
    1,652

    По умолчанию

    Nginx работа с автоподдоменами и отключение пользователей

    Nginx теперь корректно отдает статику при включенных автоподдоменах.Добавлен новый путь nginx-fallback (поумолчанию он равен @fallback). Значение поумолчанию не подходит для старых nginx (версия ниже 0.5) и оставлено исключительно для совместимости с предыдущими версиями ISPmanager. Если при отключении пользователя неправильно отдается страница ошибки, рекомендуем заменить его на /fallback.
    Насколько я понимаю это значит что должны работать авто поддомены "из коробки".
    Да должно.. но у меня панелька генерирует код . как у вас

    возможно оно и будет работать при условии, что имена файлов не совпадают на домене и субдомене

  9. #9
    Senior Member
    Регистрация
    16.10.2010
    Сообщений
    1,652

    По умолчанию

    Спасибо саппорту .. объяснили и починили

  10. #10
    Member
    Регистрация
    13.06.2009
    Сообщений
    88

    По умолчанию

    Цитата Сообщение от HappyAlex Посмотреть сообщение
    Спасибо саппорту .. объяснили и починили
    Починили глобально в панели или только у Вас на сервере?

Ваши права

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