У меня есть elasticsearch с плагином head, установленным на другом сервере. Я также настроил обратный прокси-сервер nginx для своего экземпляра ES. Конфигурация выглядит следующим образом:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name es.mydomain.net;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_pass http://127.0.0.1:9200;
}
}
}
Нажатие на ссылку http://es.mydomain.net/
работает нормально, и я получаю ответ со статусом 200. Однако, если я попытаюсь перейти по ссылке http://es.mydomain.net/_plugin/head/
, я получу пустую страницу. Обратите внимание, что страница загружается нормально, если я обращаюсь к головному плагину напрямую без обратного прокси-сервера через http://SERVERIP:PORT/_plugin/head/
.
РЕДАКТИРОВАТЬ:
После еще одной отладки я увидел ошибку net::ERR_CONTENT_LENGTH_MISMATCH
в консоли для страницы. Посмотрев журнал nginx, чтобы увидеть, в чем была ошибка, я наткнулся на истинного виновника, а именно на эту ошибку:
2015/05/27 16:26:48 [crit] 29765#0: *655 open() "/home/web/nginx/proxy_temp/6/0
0/0000000006" failed (13: Permission denied) while reading upstream, client: 10.
183.6.63, server: es.mydomain.com, request: "GET /_plugin/head/dist/app.js HTT
P/1.1", upstream: "http://127.0.0.1:9200/_plugin/head/dist/app.js", host: "es.my
domain.com", referrer: "http://es.mydomain.com/_plugin/head/"
Я специально погуглил это, и кажется, что это может произойти, потому что рабочий процесс nobody
, а папка, в которую он пытается читать/писать, может не иметь правильных разрешений. Все еще изучаю это, но обновлю ответ, когда найду
РЕДАКТИРОВАТЬ 2: удалена ненужная информация, чтобы проблема была более прямой.