nginx только на поддомене

Статус
В этой теме нельзя размещать новые ответы.

Albert22

Старатель
Регистрация
30 Мар 2008
Сообщения
270
Реакции
11
Всем привет
Сервер на FreeBSD, установлены Apache2 и nginx. PHP работает в качестве модуля Apache. Вот конфиг nginx'а (с вмешательством ISP Manager:(
Код:
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '    '$status $body_bytes_sent "$http_referer"'    '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/nginx.access.log  main;

    sendfile        on;
#    tcp_nopush     on;

#    keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;



    # another virtual host using mix of IP-, name-, and port-based configuration

    server {
        listen ip:80;
        server_name [SIZE=3]domain.tld[/SIZE] *.[SIZE=3]domain.tld[/SIZE];
        rewrite    ^(/manager/.*)$    https://$host$1    permanent;
        location ~* ^/(webstat/|awstats|webmail/|myadmin/|manimg/|ns/*) {
            proxy_pass http://ip:8080;
            proxy_redirect http://[SIZE=3]domain.tld[/SIZE]: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://ip:8080;
            proxy_redirect http://[SIZE=3]domain.tld[/SIZE]: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 ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
# мои попытки прописать условие
            if ($host ~* "^(static\.[SIZE=3]domain\.tld[/SIZE])$") {
                root /home/user/data/www/files;
                access_log /home/httpd-logs/[SIZE=3]domain.tld[/SIZE].access.log;
#                error_page 404 = @fallback;
            }
            root /home/user/data/www/files;
        }
        location @fallback {
            proxy_pass http://ip: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;
        }
    }
    client_max_body_size 16m;
}
В результате всё статическое уходит на nginx, остальное на апач.
Но возникла необходимость в маскировании mod_rewrite'ом под расширением .jpg динамического скрипта, который выдаёт изображение (чтоб одна ajax-фича понимала что это именно jpeg-изображение). Естественно до того скрипта запрос не доходит поскольку перехватывается nginx'ом и выдаёт «404 Not Found nginx/0.7.61».
Решил повесить nginx только на поддомен типа static.domain.tld чтобы проверка разширения файла проводилась только там, в остальных случаях безусловно отдавать всё на апач.
Как это реализовать? Или как прописать условие конкретно для того скрипта чтоб не перехватывался nginx'ом? И какой вариант эффективнее?

В конфиге уже есть мои попытки написать для этого условие — безрезультатно.
Заранее спасибо!
 
Вы можете напрямую общаться к апачу он работает на порте 8080
Для просмотра ссылки Войди или Зарегистрируйся
Или я что то не так понял ???
 
А если в конфиг нгинкса добавить строчку

include /etc/nginx/conf.d/subdomain.conf;


а в /etc/nginx/conf.d/subdomain.conf соответственно, что-нить вроде

server {
listen ip:80;


server_name subdomain.domain.com;



location / {
proxy_pass Для просмотра ссылки Войди или Зарегистрируйся
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
location ~* ^.+.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$
{
root /home/subdomain.domain.com/public_html/;

}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}



location ~ /\.ht {
deny all;
}
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху