LINUX.ORG.RU
решено ФорумAdmin

Простой вопрос с редиректом на /otrs/index.pl (nginx->apache)

 , , ,


0

1

Здравствуйте уважаемые.

ОС: Ubuntu 12.10 server OTRS 3.1.12

Такая ситуация: использую nginx как fron-end и apache как back-end установил OTRS и все замечательно обращаюсь на домен my.domen.ru, nginx захватывает, переводит на https и отдает на apache который в свою очередь и показывает систему

Проблема в том что нужно получать страницу авторизации без дописывания /otrs/index.pl Сейчас я вижу содержимое папки OTRS, т.е. ввожу в браузере my.domen.ru и вижу содержимое локальной папки в которой расположен OTRS, дописываю в адресной строке /otrs/index.pl и тогда уже получаю страницу авторизации.

Требуется реализовать редирект на /otrs/index.pl , т.е. ввел http://my.domen.ru получил https://my.domen.ru/otrs/index.pl

Содержимое nginx:

server {
        listen   websrv-1.domen.ru:80;
        server_name  my.domen.ru;

        rewrite ^(.*) https://$host$1 permanent;
}

server {
        listen   websrv-1.domen.ru:443;
        server_name  my.domen.ru;

        access_log  /var/log/nginx/crm.hort.pro.log;

        ssl     on;
        ssl_protocols           SSLv3 TLSv1;
        ssl_certificate         /etc/ssl/certs/domen.ru.crt;
        ssl_certificate_key     /etc/ssl/private/domen.ru.key;

allow  all;

location / {
        proxy_pass        http://my.domen.ru:8080;
            }
}

Содержимое apache:

<VirtualHost websrv-1.domen.ru:8080>

        ServerName my.domen.ru
        ServerAdmin sandr@domen.ru

        DocumentRoot /opt/otrs/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /opt/otrs/>
                Options +Indexes +SymlinksIfOwnerMatch
                IndexOptions NameWidth=* +SuppressDescription
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

ScriptAlias /otrs/ "/opt/otrs/bin/cgi-bin/"
Alias /otrs-web/ "/opt/otrs/var/httpd/htdocs/"

<IfModule mod_perl.c>

    Perlrequire /opt/otrs/scripts/apache2-perl-startup.pl

    PerlModule Apache2::Reload
    PerlInitHandler Apache2::Reload
    PerlModule Apache2::RequestRec

    <Location /otrs>
       ErrorDocument 403 /otrs/index.pl
       ErrorDocument 403 /

       SetHandler  perl-script
       PerlResponseHandler ModPerl::Registry
       Options +ExecCGI
       PerlOptions +ParseHeaders
       PerlOptions +SetupEnv
       Order allow,deny
       Allow from all
    </Location>

    <Location /otrs/nph-genericinterface.pl>
       PerlOptions -ParseHeaders
    </Location>

</IfModule>

<Directory "/opt/otrs/bin/cgi-bin/">
    AllowOverride None
    Options +ExecCGI -Includes
    Order allow,deny
    Allow from all

       PerlResponseHandler ModPerl::Registry
       Options +ExecCGI
       PerlOptions +ParseHeaders
       PerlOptions +SetupEnv
       Order allow,deny
       Allow from all
    </Location>


    <Location /otrs/nph-genericinterface.pl>
       PerlOptions -ParseHeaders
    </Location>

</IfModule>

<Directory "/opt/otrs/bin/cgi-bin/">
    AllowOverride None
    Options +ExecCGI -Includes
    Order allow,deny
    Allow from all
</Directory>

</VirtualHost>

P.S. Вопрос раньше был решен, но после смены ОС как сделать обратно сообразить не могу... ( На сколько помню опытному человеку вопрос на 2 минуты

Благодарю!

Ответ на: комментарий от leave

Предполагаю что должно быть так: ScriptAlias / «/opt/otrs/bin/cgi-bin/» но к сожалению, это не дает должного эффекта

Может кроме это строки еще нужно что-то править proxy_pass например?

Благодарю

Sandr-Ubuntu
() автор топика
Ответ на: комментарий от Sandr-Ubuntu

очевидно, еще

  <Location /otrs>
       ErrorDocument 403 /otrs/index.pl
       ErrorDocument 403 /

       SetHandler  perl-script
       PerlResponseHandler ModPerl::Registry
       Options +ExecCGI
       PerlOptions +ParseHeaders
       PerlOptions +SetupEnv
       Order allow,deny
       Allow from all
    </Location> 

leave ★★★★★
()
Ответ на: комментарий от leave

Вот этот блок не совсем понятен, нужно только изменить Lacation?

<Location />
       ErrorDocument 403 /otrs/index.pl
       ErrorDocument 403 /

       SetHandler  perl-script
       PerlResponseHandler ModPerl::Registry
       Options +ExecCGI
       PerlOptions +ParseHeaders
       PerlOptions +SetupEnv
       Order allow,deny
       Allow from all
    </Location> 

Если так тут ErrorDocument не помешает?

(К сожалению, прямо сейчас нет возможности проверить)

Благодарю

Sandr-Ubuntu
() автор топика
Ответ на: комментарий от leave

Не удалось добиться желаемого.

Пошел немного другим путем - изменяю файл otrs.conf в /etc/apache/conf.d/ (http://doc.otrs.org/3.1/ru/html/manual-installation-of-otrs.html)

Как и было выше сказано поправил ScriptAlias до «/» и Location до «/»

ScriptAlias / "/opt/otrs/bin/cgi-bin/"
Alias /otrs-web/ "/opt/otrs/var/httpd/htdocs/"

<IfModule mod_perl.c>

    Perlrequire /opt/otrs/scripts/apache2-perl-startup.pl

    PerlModule Apache2::Reload
    PerlInitHandler Apache2::Reload
    PerlModule Apache2::RequestRec

    <Location />
#        ErrorDocument 403 /otrs/customer.pl
#        ErrorDocument 403 /otrs/index.pl
        SetHandler  perl-script
        PerlResponseHandler ModPerl::Registry
        Options +ExecCGI
        PerlOptions +ParseHeaders
        PerlOptions +SetupEnv
        Order allow,deny
        Allow from all
    </Location>

    <Location /otrs/nph-genericinterface.pl>
        PerlOptions -ParseHeaders
    </Location>

</IfModule>

<Directory "/opt/otrs/bin/cgi-bin/">
    AllowOverride None
    Options +ExecCGI -Includes
    Order allow,deny
    Allow from all
</Directory>
<Directory "/opt/otrs/var/httpd/htdocs/">
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<IfModule mod_headers.c>
    <Directory "/opt/otrs/var/httpd/htdocs/skins/*/*/css-cache">
        <FilesMatch "\.(css|CSS)$">
            Header set Cache-Control "max-age=2592000 must-revalidate"
        </FilesMatch>
    </Directory>

    <Directory "/opt/otrs/var/httpd/htdocs/js/js-cache">
        <FilesMatch "\.(js|JS)$">
            Header set Cache-Control "max-age=2592000 must-revalidate"
        </FilesMatch>
    </Directory>

В результате при обращении на домен содержимое папки больше не вижу, а получаю 404 Если в адресной строке броузера добавить /index.pl - открывается форма аутентификации, но без css и кнопки не активны Если в адресной строке добавить /otrs/index.pl - получаю 404

Вопрос прежний как сделать, что бы при обращении к домену сразу попадал на страницу авторизации (index.pl) или на /otrs/index.pl ?

Благодарю!

Sandr-Ubuntu
() автор топика
Ответ на: комментарий от Sandr-Ubuntu

css - смотри в логах апача, где именно он пытается его искать. index.pl - ищи, где задается DirectoryIndex (htaccess, например, или еще где-то в конфигах апача)

leave ★★★★★
()
Ответ на: комментарий от Sandr-Ubuntu

Последние изменения:

Удалил все из /etc/apache2/conf.d/ Создал в /etc/apache2/sites-available/otrs.conf заполнив его из /opt/otrs/scripts/apache2-httpd.include.conf Добавив VirtualHost

Получилось:


<VirtualHost websrv-1.domen.ru:8080>

        ServerName my.domen.ru
        ServerAdmin sandr@domen.ru


# --
# added for OTRS (http://otrs.org/)
# $Id: apache2-httpd.include.conf,v 1.25 2011/11/05 17:39:09 mb Exp $
# --

# agent, admin and customer frontend
ScriptAlias / "/opt/otrs/bin/cgi-bin/"
Alias /otrs-web/ "/opt/otrs/var/httpd/htdocs/"

# activate this if you are using an Oracle database
#SetEnv ORACLE_HOME /path/to/your/oracle/
#SetEnv ORACLE_SID YOUR_SID
#SetEnv NLS_LANG AMERICAN_AMERICA.UTF8
#SetEnv NLS_DATE_FORMAT 'YYYY-MM-DD HH24:MI:SS'

# if mod_perl is used
<IfModule mod_perl.c>

    # load all otrs modules
    Perlrequire /opt/otrs/scripts/apache2-perl-startup.pl

    # Apache::Reload - Reload Perl Modules when Changed on Disk
    PerlModule Apache2::Reload
    PerlInitHandler Apache2::Reload
    PerlModule Apache2::RequestRec

    # set mod_perl2 options
    <Location />
#        ErrorDocument 403 /otrs/customer.pl
#        ErrorDocument 403 /otrs/index.pl
        SetHandler  perl-script
        PerlResponseHandler ModPerl::Registry
        Options +ExecCGI
        PerlOptions +ParseHeaders
        PerlOptions +SetupEnv
        Order allow,deny
        Allow from all
    </Location>

    # set mod_perl2 option for generic interface
    <Location /nph-genericinterface.pl>
        PerlOptions -ParseHeaders
    </Location>

</IfModule>

# directory settings
<Directory "/opt/otrs/bin/cgi-bin/">
    AllowOverride None
    Options +ExecCGI -Includes
    Order allow,deny
    Allow from all
</Directory>
<Directory "/opt/otrs/var/httpd/htdocs/">
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<IfModule mod_headers.c>
    <Directory "/opt/otrs/var/httpd/htdocs/skins/*/*/css-cache">
        <FilesMatch "\.(css|CSS)$">
            Header set Cache-Control "max-age=2592000 must-revalidate"
        </FilesMatch>
    </Directory>

    <Directory "/opt/otrs/var/httpd/htdocs/js/js-cache">
        <FilesMatch "\.(js|JS)$">
            Header set Cache-Control "max-age=2592000 must-revalidate"
        </FilesMatch>
    </Directory>
</IfModule>

# MaxRequestsPerChild (so no apache child will be to big!)
#MaxRequestsPerChild 4000


</VirtualHost>

В итоге перейдя по my.domen.ru получаю 404. Дописываю /index.pl - получаю страницу авторизации. Авторизовываюсь, открывается главная, но нет js'a и не нажимается ни одна кнопка. Оформление есть - css видимо подгрузился.

Как избавить от необходимости вбивать /index.pl и получить работоспособную систему (подгрузить все модули и js)?

P.S. Если в конфиге nginx в proxy pass добавить /index.pl, то попадаем сразу на страницу авторизации, но после авторизации вываливаемся в 404.

Sandr-Ubuntu
() автор топика
Ответ на: комментарий от leave

Сам апач думаю править нельзя, кроме OTRS есть еще другие системы.

А как прописать в .htaccess при том что используется алиас, фантазии и знаний не хвататет... (

Sandr-Ubuntu
() автор топика
Ответ на: комментарий от leave

С Directory позже почитаю (если дадите линк буду признателен)

А вот логи по js найти не могу, подскажите где копать?

Sandr-Ubuntu
() автор топика
Ответ на: комментарий от leave

Благодарю

accesssslog и my.domen.ru_accesslog девственно чисты Может какой-то режим дебага надо включить или что-то в этом духе?

Sandr-Ubuntu
() автор топика
Ответ на: комментарий от Sandr-Ubuntu

leave, благодарю за помощь!

Решение выглядит так:

<VirtualHost websrv-1.domen.ru:8080>

       ServerName my.domen.ru
       ServerAdmin sandr@domen.ru

ScriptAlias /otrs/ "/opt/otrs/bin/cgi-bin/"
Alias /otrs-web/ "/opt/otrs/var/httpd/htdocs/"
Alias / "/opt/otrs/var/httpd/htdocs/"

<IfModule mod_perl.c>

    Perlrequire /opt/otrs/scripts/apache2-perl-startup.pl

    PerlModule Apache2::Reload
    PerlInitHandler Apache2::Reload
    PerlModule Apache2::RequestRec

    <Location /otrs/>
#        ErrorDocument 403 /otrs/customer.pl
#        ErrorDocument 403 /otrs/index.pl
       SetHandler  perl-script
       PerlResponseHandler ModPerl::Registry
       Options +ExecCGI
       PerlOptions +ParseHeaders
       PerlOptions +SetupEnv
       Order allow,deny
       Allow from all
    </Location>

    <Location /nph-genericinterface.pl>
       PerlOptions -ParseHeaders

    </Location>

</IfModule>

<Directory "/opt/otrs/bin/cgi-bin/">
    AllowOverride None
    Options +ExecCGI -Includes
    Order allow,deny
    Allow from all
</Directory>
<Directory "/opt/otrs/var/httpd/htdocs/">
    AllowOverride None
    Order allow,deny
    Allow from all
    DirectoryIndex index.html index.pl
</Directory>

<IfModule mod_headers.c>
    <Directory "/opt/otrs/var/httpd/htdocs/skins/*/*/css-cache">
       <FilesMatch "\.(css|CSS)$">
           Header set Cache-Control "max-age=2592000 must-revalidate"
       </FilesMatch>
    </Directory>

    <Directory "/opt/otrs/var/httpd/htdocs/js/js-cache">
       <FilesMatch "\.(js|JS)$">
           Header set Cache-Control "max-age=2592000 must-revalidate"
       </FilesMatch>
    </Directory>
</IfModule>

</VirtualHost>
Sandr-Ubuntu
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.