Eсть nginx, а под ним apache.
Есть файлы картинок по адресу `/uploads/images…`, запросы к которым перенаправляются в скрипт, а тот уже решает, надо ли отдавать картинку, или редиректнуть юзера на страницу логина.
.htaccess:
RewriteCond %{REQUEST_URI} ^/uploads.*
RewriteRule ^(.*)$ ./getpics.php [L]
Отдача картинок осуществляется nginx, путем передачи заголовка `X-Accel-Redirect`. У nginx следующие настройки:
location /uploads {
internal;
alias /files/uploads;
}
Однако вместо картинки, я получаю 500 ошибку от нжинкса:
rewrite or internal redirection cycle while internally redirecting to "/uploads/images/00/0…" while reading response header from upstream, client: 66.87……, server: server.org, request: "GET /uploads/images/0… HTTP/1.1", upstream: "http://127.0.0.1:80/uploads/images/00…", host: "server.org"
Полный конфиг /etc/nginx/sites-enabled/sitename:
server {
listen 123.45.67.89:80; ## listen for ipv4; this line is default and implied
root /var/www/sitename;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name sitename.com;
location /uploads/images/ {
proxy_buffers 8 32k;
proxy_buffer_size 64k;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header RawURI $request_uri;
if ($check) {
proxy_pass http://127.0.0.1:80;
break;
}
root /var/www/sitename;
}
location / {
proxy_buffers 8 32k;
proxy_buffer_size 64k;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header RawURI $request_uri;
proxy_pass http://127.0.0.1:80;
}
# http://stackoverflow.com/questions/16189758/serve-large-file-with-php-and-nginx-x-accel-redirect
location /uploads {
internal;
alias /files/uploads;
}
location ~ (\.mp3|avatar_\d+x\d+\.(jpe?|pn)g)$ {
}
}