Задать вопрос
shur1k
@shur1k

Почему не работает captcha в nginx?

Добрый день!

Столкнулся с такой проблемой, не работает динамическая capthca в nginx. Ранее сайт работал на apache+php перенесли на nginx + php-fpm.
Проблема в том что есть каптча, которая генерируется динамично с помощью контроллера php не отображается на сайте, в логах следующее:

2014/02/11 14:12:37 [error] 3029#0: *1 open() "/var/www/site.ru/captcha.jpg" failed (2: No such file or directory), client: 37.110.25.111, server: site.ru, request: "GET /captcha.jpg?1392145982456 HTTP/1.1", host: "www.site.ru", referrer: "http://www.site.ru/qna/"


Конфиг виртуального хоста:

location / {
            index  index.php;
            #auth_basic "Members Only";
            #auth_basic_user_file /etc/nginx/htpasswd;
            rewrite ^/image /image.php last;
            rewrite ^/web/(.*) /web/$1 last;
            rewrite ^/receiver.html /receiver.html last;
            rewrite ^/ /index.php last;
            #rewrite ^/captcha.jpg /controller/common.php last;
            #try_files $uri $uri/ /index.php;
        }

        #location /captcha.jpg {
        #}

        # Images and static content is treated different
        location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|xml|ttf|woff|eof|swf)$ {
             access_log        off;
             expires           100d;
        }


Если из статики убрать .jpg то все работает, но половина картинок не отображается. Пробовал как указано в комментариях кофига отдавать напрямую, тоже не работает. Кто сталкивался с подобным на nginx+php-fpm подскажите как решили.
  • Вопрос задан
  • 3656 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Nc_Soft
Как-то так (не тестил)
location = /captcha.jpg {
//тут либо пхп обработчик либо реврайт
rewrite ^/captcha.jpg /controller/common.php last;
}
Ответ написан
Какой кошмар у вас в конфиге. Вы доку Сысоева почитайте. Она на русском и очень понятно написана
У меня примерно так сделано:
...
	location = /path/to/capcha.php {
		include  php5_provider;
	}
	location = /capcha {
		rewrite ^  /path/to/capcha.php?$uri last;
	}
Ответ написан
Ваш ответ на вопрос

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

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