Albert22
Старатель
- Регистрация
- 30 Мар 2008
- Сообщения
- 270
- Реакции
- 11
- Автор темы
- #1
Всем привет
Сервер на FreeBSD, установлены Apache2 и nginx. PHP работает в качестве модуля Apache. Вот конфиг nginx'а (с вмешательством ISP Manager
В результате всё статическое уходит на nginx, остальное на апач.
Но возникла необходимость в маскировании mod_rewrite'ом под расширением .jpg динамического скрипта, который выдаёт изображение (чтоб одна ajax-фича понимала что это именно jpeg-изображение). Естественно до того скрипта запрос не доходит поскольку перехватывается nginx'ом и выдаёт «404 Not Found nginx/0.7.61».
Решил повесить nginx только на поддомен типа static.domain.tld чтобы проверка разширения файла проводилась только там, в остальных случаях безусловно отдавать всё на апач.
Как это реализовать? Или как прописать условие конкретно для того скрипта чтоб не перехватывался nginx'ом? И какой вариант эффективнее?
В конфиге уже есть мои попытки написать для этого условие — безрезультатно.
Заранее спасибо!
Сервер на 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;
}
Но возникла необходимость в маскировании mod_rewrite'ом под расширением .jpg динамического скрипта, который выдаёт изображение (чтоб одна ajax-фича понимала что это именно jpeg-изображение). Естественно до того скрипта запрос не доходит поскольку перехватывается nginx'ом и выдаёт «404 Not Found nginx/0.7.61».
Решил повесить nginx только на поддомен типа static.domain.tld чтобы проверка разширения файла проводилась только там, в остальных случаях безусловно отдавать всё на апач.
Как это реализовать? Или как прописать условие конкретно для того скрипта чтоб не перехватывался nginx'ом? И какой вариант эффективнее?
В конфиге уже есть мои попытки написать для этого условие — безрезультатно.
Заранее спасибо!