Nginx, Jira пропавшие гаджеты и не загружающиеся CSS и JavaScript

в разделе Администрирование | Метки: Тпштч, Nginx, Jira

Некоторое время назад я писал о том как настроить Nginx для того чтобы он работал с Jira. В связи с тем что я до последнего времени не очень активно юзал Jira, все работало отлично и проблем никаких не возникало. Однако внезапно проблемы появились, проявлялись эти проблемы в том что перестали подгружаться различные стили и JavaScript файлы, в общем статика разная. Как я понял Jira (или Tomcat) отдает их не напрямую, а через какие то Rewrite итд, возможно потому что содержимое их меняется в зависимости от того что на странице происходит.

Так все это выглядело
Jira и неработающие гаджеты

Попробовал пооткрывать в разных браузерах, даже с айфона через GPRS, т.к. я уже подумал что это богомерзкий Касперский со своей дебильной защитой заблокировал мне скрипты. Гаджеты не появлялилсь нигде. Покопавшись в логах ничего особенного найти не удалось, кроме того что Nginx не может получить статику от Jira.

"http://127.0.0.1:8080/s/531/2/1.1.5.1/_/download/batch/com.atlassian.gadgets.dashboard:dashboard/com.atlassian.gadgets.dashboard:dashboard.js", host: "jira.XXXX.com", referrer: "http://jira.XXXX.com/secure/Dashboard.jspa"
2010/09/27 22:31:32 [crit] 15402#0: *12016 open() "/var/lib/nginx/proxy/2/05/0000000052" failed (13: Permission denied) while reading upstream, client: 192.168.1.20, server: jira.XXXX.com, request: "GET /secure/admin/jira/JiraSupportRequest!default.jspa HTTP/1.1", upstream: "http://127.0.0.1:8080/secure/admin/jira/JiraSupportRequest!default.jspa", host: "jira.XXXX.com"
2010/09/27 22:34:01 [crit] 15402#0: *12043 open() "/var/lib/nginx/proxy/3/05/0000000053" failed (13: Permission denied) while reading upstream, client: 192.168.1.20, server: jira.XXXX.com, request: "GET /secure/admin/jira/ViewSystemInfo.jspa HTTP/1.1", upstream: "http://127.0.0.1:8080/secure/admin/jira/ViewSystemInfo.jspa", host: "jira.XXXX.com", referrer: "http://jira.XXXX.com/secure/project/ViewProjects.jspa"

Так как у меня еще не кончилась купленная лицензия, то я собрал все логи и скриншоты и написал в саппорт. Через какое то время рассмотрев проблему, мне ответили что не могут помочь т.к. не предоставляют поддержку для сторонних приложений и предложили спросить на их форуме, но дали совет посмотреть разрешения на директорию и кинули ссылку на статью, как оказалось позже полезную. Пока ехал с работы я подумал что скорей всего проблема в том что nginx еще держит в кэше страницы.

Нашел опцию для конфига, которая задает время через которое кэш становится не валидным вставил в свой конфиг и все заработало сразу же, гаджеты появились и все css подгрузились.

Вот полная версия конфига при которой все должно работать нормально.

server {
        listen   80;
        server_name  jira.XXXX.com;
 
        access_log /var/log/nginx/jira-XXXX-com--access.log;
        error_log   /var/log/nginx/jira-XXXX-com--error.log;
        location / {
        proxy_pass http://localhost:8080/;
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-for $remote_addr;
        port_in_redirect off;
        proxy_redirect   http://jira.XXXX.com:8080/    /;
        proxy_connect_timeout 300;
        proxy_cache_valid   200 302         1m;
        proxy_cache_valid   404             1m;
        }
 
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root   /var/www/nginx-default;
        }
 
}

proxy_cache_valid 200 302 1m; - эту часть думаю можно успешно заменить на 1h (т.е. 1 час), но мне хотелось весь кэш сбросить поэтому поставил одну минуту.

обновление: сейчас опять эта проблема всплыла, я полез смотреть на разрешения на директорию с кэшем (как раз то на что указали в саппорте), почему то они были у меня для www-data, хотя nginx работает под nobody

# ls -lha /var/lib/nginx/proxy/
total 48K
drwx------ 12 nobody   root     4.0K Feb 12  2009 .
drwxr-xr-x  5 root     root     4.0K Nov 21  2008 ..
drwx------ 34 www-data www-data 4.0K Apr 23 18:36 0
drwx------ 34 www-data www-data 4.0K Mar 11  2010 1
drwx------ 30 www-data www-data 4.0K Jan 23  2010 2
drwx------ 37 www-data www-data 4.0K Jan  7  2010 3
drwx------ 43 www-data www-data 4.0K Apr 23 22:35 4
drwx------ 40 www-data www-data 4.0K Apr 23 21:05 5
drwx------ 37 www-data www-data 4.0K Jan  7  2010 6
drwx------ 37 www-data www-data 4.0K Apr  9 17:16 7
drwx------ 35 www-data www-data 4.0K Apr 25 17:29 8
drwx------ 39 www-data www-data 4.0K Apr 25 17:29 9

и по датам видно что кэш то и не работал ни хрена вообще

в общем вот это окончательно решило проблему:

# chown  -R nobody /var/lib/nginx/proxy/*