我试图用Nginxbuild立一个部落群件。 web界面的工作原理,但我没有得到的ActiveSync特定的URL工作。 部落维基解释了如何在这里使用Apache Webserver。
我的问题是,我设置了一个重写(尝试别名)以通过/horde/rpc.php脚本来提供位置/horde/Microsoft-Server-ActiveSync 。 但是用我当前的configuration,nginx重写并返回一个200状态码。 但它看起来像PHP文件没有执行。 如果我直接去/horde/rpc.php它打开login对话框。 所以这似乎是正确的。
首先,我在Google上search这个问题,但找不到一个可行的解决scheme。 所以现在我想问你。
configuration应该允许通过URL /horde/Microsoft-Server-ActiveSync访问ActiveSync部分。 部落的web界面已经可以通过/horde访问。
我的configuration如下所示:
默认的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日志级别设置为debugging。 请求之后的输出是:
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不正确的工作? 如果我理解正确,它会尝试build立一个基本的身份validation过程。 这可能是一个问题吗?
经过更多的尝试,看着日志(最后是正确的),我发现我的错。 毕竟这是一个configuration错误。
部落维基在一行中给出了提示:
要激活服务器,需要在部落的configuration中启用ActiveSync选项卡。
这一个给了我正确的方向:我在configurationsearch,但无法findActiveSync的东西。 所以我深入挖掘,最后意识到我没有安装库Horder_ActiveSync。 🙁
做了一个sudo pear install horde/horde_activesync和从WebUI更新数据库表一切正常!
希望这可以帮助别人。