Обслуживание Redmine по Sub-URI с использованием NGinX и uwsgi

У меня Redmine работает в /с использованием NGinX и UWSGI, но я хотел бы обслуживать его под /redmine. Ниже приведена конфигурация:

location /redmine {
    gzip off;
    uwsgi_pass unix:/tmp/redmine.socket;
    include uwsgi_params;
    uwsgi_modifier1 7;
}

Конфигурация uwsgi:

[uwsgi]
plugin = rack
master = true
processes = 4
socket = /tmp/redmine.socket
chmod-socket = 664
chdir = /opt/redmine
rack = ./config.ru
env = RAILS_ENV=production

Я уже пытался включить эти строки:

mount = /redmine=config.ru
manage-script-name = true

как предложено в http://uwsgi-docs.readthedocs.org/en/latest/Nginx.html#dynamic-apps, но это не сработало. Затем я попробовал несколько предложений, перечисленных в http://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_in_a_sub-URI, но ни один из них не работал.

Любые идеи?


person andref    schedule 20.12.2015    source источник


Ответы (1)


Если uWSGI работает с Redmine, но просто недоступен через Nginx, установите SCRIPT_NAME и модификатор 1 uWSGI на 30 следующим образом:

location /redmine {
    gzip off;
    include uwsgi_params;
    uwsgi_param SCRIPT_NAME /redmine;
    uwsgi_modifier1 30;
    uwsgi_pass unix:/tmp/redmine.socket;
}

должен решить вашу проблему без другой конфигурации (см. описания пакетов uWSGI для значений модификатора.

В более старой версии Redmine мне пришлось добавить в файл config/additional_environment.rb следующее:

begin
    ActionController::Base.relative_url_root = '/redmine'
rescue
    #nothing
end

а затем также иметь доступ к перезаписи Nginx для приложения следующим образом:

location /redmine {
    [...]
    rewrite ^/redmine(.*)$ $1 break; 
    [...]
}

Обратите внимание, что это работало, когда Nginx выполнял proxy_pass для приложения Rails, а не uWSGI, поэтому может предоставить запасной вариант.

person davidjb    schedule 21.12.2015