Псевдоним или перезапись Nginx для Horde Groupware ActiveSync URL не обрабатывает файл rpc.php
Я пытаюсь настроить групповое программное обеспечение Орды с Nginx. Веб-интерфейс работает, но я не получаю конкретный URL-адрес ActiveSync для работы. Horde Wiki объясняет, как использовать его с веб-сервером Apache.
Моя проблема в том, что я настроил переписать (тоже пробовал псевдоним), чтобы обслуживать местоположение /horde/Microsoft-Server-ActiveSync
через /horde/rpc.php
скрипт. Но с моей текущей конфигурацией nginx переписывает и возвращает код состояния 200. Но похоже, что файл php не выполняется. Если я пойду к /horde/rpc.php
непосредственно он открывает диалог входа в систему. Так что, похоже, это работает правильно.
Сначала я гуглил проблему, но не смог найти работающего решения. Так что теперь я хотел бы спросить вас.
Конфигурация должна разрешать доступ к части ActiveSync через URL /horde/Microsoft-Server-ActiveSync
, Веб-интерфейс орды уже доступен через /horde
,
Моя конфигурация выглядит так:
по умолчанию-ssl.conf
server {
listen 443 ssl;
ssl on;
ssl_certificate /opt/nginx/conf/certs/server.crt;
ssl_certificate_key /opt/nginx/conf/certs/server.key;
server_name example.com;
index index.html index.php;
root /var/www;
include sites-available/horde.conf;
}
horde.conf
location /horde {
rewrite_log on;
rewrite ^/horde/Microsoft-Server-ActiveSync(.*)$ /horde/rpc.php$1 last;
try_files $uri $uri/ /rampage.php?$args;
location ~ \.php$ {
try_files $uri =404;
include sites-available/horde.fcgi-php.conf;
}
}
horde.fcgi-php.conf
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_params (по умолчанию nginx)
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
Уровень журнала nginx настроен на отладку. Вывод после запроса:
2014/06/13 10:33:15 [notice] 17332#0: *1 "^/horde/Microsoft-Server-ActiveSync(.*)$" matches "/horde/Microsoft-Server-ActiveSync", client: XX.XX.XX.XX, server: example.com, request: "GET /horde/Microsoft-Server-ActiveSync HTTP/1.1", host: "example.com"
2014/06/13 10:33:15 [notice] 17332#0: *1 rewritten data: "/horde/rpc.php", args: "", client: XX.XX.XX.XX, server: example.com, request: "GET /horde/Microsoft-Server-ActiveSync HTTP/1.1", host: "example.com"
Все это происходит на RaspberryPi с Raspbian GNU/Linux 7 (который в основном является Debian Wheezy). Так что я думаю, что перезапись работает, но файл php не обрабатывается?! Кто-нибудь знает, где проблема и как ее исправить?
ОБНОВЛЕНИЕ: если я изменю файл rpc.php
в mytest.php
с этим содержанием:
<pre>
<?php var_export( $_SERVER ); ?>
</pre>
И измените переписать на
rewrite ^/horde/Microsoft-Server-ActiveSync(.*)$ /horde/mytest.php$1 last;
Я получаю правильный вывод:
array (
'USER' => 'www-data',
'HOME' => '/var/www',
'FCGI_ROLE' => 'RESPONDER',
'QUERY_STRING' => '',
'REQUEST_METHOD' => 'GET',
'CONTENT_TYPE' => '',
'CONTENT_LENGTH' => '',
'SCRIPT_NAME' => '/horde/mytest.php',
'REQUEST_URI' => '/horde/Microsoft-Server-ActiveSync',
'DOCUMENT_URI' => '/horde/mytest.php',
'DOCUMENT_ROOT' => '/var/www',
'SERVER_PROTOCOL' => 'HTTP/1.1',
'GATEWAY_INTERFACE' => 'CGI/1.1',
'SERVER_SOFTWARE' => 'nginx/1.4.4',
'REMOTE_ADDR' => 'XX.XX.XX.XX',
'REMOTE_PORT' => '25330',
'SERVER_ADDR' => 'XX.XX.XX.XX',
'SERVER_PORT' => '80',
'SERVER_NAME' => 'example.com',
'REDIRECT_STATUS' => '200',
'PATH_INFO' => '',
'PATH_TRANSLATED' => '/var/www',
'SCRIPT_FILENAME' => '/var/www/horde/mytest.php',
'HTTP_HOST' => 'example.com',
'HTTP_USER_AGENT' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0',
'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'HTTP_ACCEPT_LANGUAGE' => 'en-US,en;q=0.5',
'HTTP_ACCEPT_ENCODING' => 'gzip, deflate',
'HTTP_DNT' => '1',
'HTTP_COOKIE' => 'XXX',
'HTTP_IF_MODIFIED_SINCE' => 'Thu, 12 Jun 2014 11:56:09 GMT',
'HTTP_CACHE_CONTROL' => 'max-age=0',
'HTTP_CONNECTION' => 'keep-alive',
'PHP_SELF' => '/horde/mytest.php',
'REQUEST_TIME_FLOAT' => 1402664378.2101,
'REQUEST_TIME' => 1402664378,
)
Так почему же rpc.php не работает правильно? Если я правильно понимаю, он пытается установить базовый процесс аутентификации. Может ли это быть проблемой?
1 ответ
После дополнительных попыток и просмотра логов (наконец-то правильных) я нашел свою вину. Ведь это была ошибка конфигурации.
Орда Вики дает подсказку в одной строке:
Чтобы активировать сервер, его необходимо включить в конфигурации Horde на вкладке ActiveSync.
Это дает мне правильное направление: я искал в конфигурации, но не смог найти вещи ActiveSync. Поэтому я покопался глубже и в итоге понял, что не установил библиотеку Horder_ActiveSync.:(
После выполнения sudo pear install horde/horde_activesync
и обновление таблиц базы данных из WebUI все работает сейчас!
Надеюсь, это поможет кому-то еще.