У меня 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, но ни один из них не работал.
Любые идеи?
Ответ 1 · davidjb
Если 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, поэтому может предоставить запасной вариант.