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

Nginx + Apache. Почему не работает imagick?

Связка nginx+apache+mod_php не работает обработка изображений при помощи ImageMagick, также не работает и расширение GD. Любой графический файл нормально загружается и отображается, но если к нему будет применена обработка средствами GD или ImageMagick, то ничего не происходит. Ошибок нет ни у PHP ни у обоих серверов (кроме ошибок доступа к файлам которые должны были появиться после обработки исходного изображения)
Если убрать nginx, то с одним apache обработка изображений любым способом (либо GD, либо imagick) работает отлично.
Я только недавно начал знакомиться с nginx и прошу подсказать в каком направлении мне копать эту проблему.
Конфиги:
nginx.conf
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
	worker_connections 768;
}

http {
	sendfile on;
	tcp_nodelay on;
	keepalive_timeout 65;
	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	gzip on;
	gzip_proxied any;
	gzip_comp_level 4;
	gzip_buffers 4 8k;
	gzip_http_version 1.0;
	gzip_min_length     1100;
	
	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

конфиг виртуального сервера:
server {
listen 80;
server_name example.com www.example.com;
access_log /var/www/logs/nginx_access.log;
error_log /var/www/logs/nginx_error.log;


location ~*
\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|docx|xlsx)$ {
root  /var/www/srv/marques1/www/sitera;
index index.html index.php;
access_log off;
expires 30d;
}
location ~ /\.ht {
deny all;
}

location / {
proxy_pass http://127.0.0.1:8376/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
  • Вопрос задан
  • 3283 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@kaasius
location ~*
\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|docx|xlsx)$ {
root  /var/www/srv/marques1/www/sitera;
try_files $uri @resize
access_log off;
expires 30d;
}

location @resize {
    proxy_pass http://127.0.0.1:8376;
}


И всяческие proxy_set_header лучше вынести хотя бы в секцию server, а то так и в http.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
street
@street
Backend developer
nginx выступает в роли проксирующего сервера и не взаимодействует напрямую с imagemagick. Если на apache все работает, то должно работать и на nginx.
То, что ничего не происходит - тоже странно, должно быть хоть какое-то сообщение об ошибке.
Смотрите логи php.
Ответ написан
Ошибка в самом начале
location ~*\.(jpg

Меняй на
location ~* ^.+\.(jpg
представь урл site.ru/prajs
________________

Все косяки всего несовместимого решается еще проще.
error_page 404 = @fallback;
location @fallback {
proxy_pass http://$host:8376;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
Все что не нашел nginx полезет брать с апача.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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