Nginx Rewrite, как решить проблему с картинками из спецпапки?

Доброго времени суток.

До того как я установил на сервер NGINX, у меня на сервере был только Apache и соотвественно правила писались в htaccess
RewriteRule photos/(.+)$ modules/qplboard/image_db/$1

После того как я пересел на NGINX, я не смог написать валидный конфиг, чтобы фотографии отдавал не Apache, а NGINX. Речь идет о фотографиях, URL которых реврайтился через htaccess.

Nginx vhost.conf
server {
access_log off;

error_log  logs/vhost-error_log warn;
listen    80;
server_name  mydomain.ru www.mydomain.ru;

location ~* \.(gif|jpg|jpeg|png|ico|wmv|3gp|avi|mpg|mpeg|mp4|flv|mp3|mid)$ {
root   /home/username/public_html/mydomain.ru;
expires 14d;
}

location / {
client_max_body_size    10m;
client_body_buffer_size 128k;

proxy_send_timeout   90;
proxy_read_timeout   90;

proxy_buffer_size    4k;
# you can increase proxy_buffers here to suppress "an upstream response
#  is buffered to a temporary file" warning
proxy_buffers     16 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

proxy_connect_timeout 30s;

proxy_redirect  http://www.mydomain.ru:8080   http://www.mydomain.ru;
proxy_redirect  http://mydomain.ru:8080   http://mydomain.ru;

proxy_pass   http://192.168.0.1:8080/;

proxy_set_header   Host   $host;
proxy_set_header   X-Real-IP  $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
}
}


Полный пусть до фотографий:
/home/username/public_html/mydomain.ru/modules/qplboard/image_db/

При таком правиле запросы идут на Apache
location ~ ^/photos/(.*)$ {
    rewrite  ^/photos/(.+)$  /mydomain.ru/modules/qplboard/image_db/$1;
}

tail -f mydomain.ru
109.12.218.212 - - [15/Apr/2014:00:12:40 +0500] "GET /photos/8952_1_b.JPG HTTP/1.0" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36"

Данное правило я писал сразу после server_name

При такой конфигурации запросы идут только на NGINX, фотографии не открываются.
404 Not Found
nginx/1.4.7
location ~ ^/photos/(.*)$ {
    root /mydomain.ru/modules/qplboard/image_db;
    access_log off;
    expires 14d;
}


Буду очень признателе вам, если поможете мне написать правило, при котором при обращении к
www.mydomain.ru/photos/8952_1_b.JPG
фотографии NGINX будет отдавать из папки /home/username/public_html/mydomain.ru/modules/qplboard/image_db/

Для остальных картинок подходит правило, которое уже описано в vhost.conf
  • Вопрос задан
  • 4829 просмотров
Решения вопроса 1
inside22
@inside22 Автор вопроса
Рабочий код. Файлы из этой папки отдает NGINX.
location ~ /photos/(.*)$ {
alias /home/username/public_html/mydomain.ru/modules/qplboard/image_db/$1;
expires 14d;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
location ~^/photos/ { 
alias /home/username/public_html/mydomain.ru/modules/qplboard/image_db; 
}


Как-то так. Если вам нужно только картинки с определенным расширением оттуда отдавать, то расширьте регулярку до ~^/photos/.*\.(gif|jpg|jpeg|png|ico)$, например
Ответ написан
Комментировать
inside22
@inside22 Автор вопроса
@inkvizitor68sl по разному пытался, к сожалению ничего не получается.
Один раз получилось "403 Forbidden", правда не приложу ума почему :-(

location ~^/photos/ {
alias /home/username/public_html/mydomain.ru/modules/qplboard/image_db;
}

403 Forbidden
nginx/1.4.7

location ~^/photos/(.*)$ {
alias /home/username/public_html/mydomain.ru/modules/qplboard/image_db/$1;
}

404 Not Found
nginx/1.4.7

location ~ ^/photos/(.*)$ {
alias /home/username/public_html/mydomain.ru/modules/qplboard/image_db;
}

403 Forbidden
nginx/1.4.7
Ответ написан
Комментировать
inside22
@inside22 Автор вопроса
Продолжаю эксперименты с конфигом NGINX:

Работает, но пробрасывает запрос на Apache
location ~ /photos/6426_1_b.JPG {
     rewrite ^ /modules/qplboard/image_db/6426_1_b.JPG;
}


Не работает вообще
location ~ /photos/6426_1_b.JPG {
alias /modules/qplboard/image_db/6426_1_b.JPG;
}

404 Not Found
nginx/1.4.7
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы