Pentaho + Saiku = Nginx «Error 400 Illegal character in path…»

Блин, последнее время часто натыкаюсь на какието нёхи … притом на ровном месте 🙂
Решил за nginx засунуть Pentaho и Pentaho-DI, сделал по этой статье … на данном этапе проблем не возникло. А вот установленный в Pentaho плагин Saiku Analytics отказался фильтровать данные при постройке OLAP-ов … После тучи угробленного времени с дебагом java, решил копнуть в сторону nginx, и правильно сделал 🙂 Он то зараза мне свинью и подсунул в виде вот такой ошибки:

122.122.100.2 - - [13/Dec/2014:09:07:01 +0000] "GET /pentaho/plugin/saiku/api/api/query/2CA565443-5B4B-3841-AC54-168602DCE65C/result/metadata/hierarchies/%5Bboss.default%5D/levels/fio?result=true&searchlimit=3000&_=1418720804584 HTTP/1.1" 400 990 "https://pentaho.somedomain.com/pentaho/content/saiku-ui/index.html?biplugin5=true&ts=1418720803760" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.3.0" "-"

Ошибка эта изза того что jQuery саиковский генерит GET запрос содержащий символы «[]» которые nginx лихо преобразовывает в «%5B» и «%5D» и уже в таком виде отдает tomcat-у … на что томкат рычит и запрос не понимает, тупо отбрасывает с ошибкой.
Для решения данной проблемки достаточно в конфиге nginx убрать слеш в параметре proxy_pass. Короче … делай как я!

было так:

location / {
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto https;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header Host      $http_host;
       proxy_pass       http://127.0.0.1:8080/;
    }

а надо вот так:

location / {
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto https;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header Host      $http_host;
       proxy_pass       http://127.0.0.1:8080;
    }

Короче, не ходите дети в google конфиги искать 🙂 Ато бульдоги и носороги там такого понаписывали 🙂

Хай щастить!

    • skeletor
    • Декабрь 17th, 2014 9:42дп

    И что же поменялось в локейшине? Они идентичны.

    • admin
    • Декабрь 17th, 2014 10:13дп

    @skeletor
    поменялся только слеш в конце адреса proxy_pass 🙂

  1. Трэкбэков пока нет.

Why ask?