如何使用Nginx提供Autodiscover.xml

我正在尝试使用Nginx提供Autodiscover.xml文件:

以下是我的configuration:

上游autodiscoverexamplecoukbackend {
         server unix:/var/run/php-fcgi-autodiscoverexamplecouk.sock;
 }

服务器{
        听80;
        听443 ssl;

         ssl_certificate /etc/letsencrypt/live/autodiscover.example.co.uk/fullchain.pem;
         ssl_certificate_key /etc/letsencrypt/live/autodiscover.example.co.uk/privkey.pem;

         server_name autodiscover.example.co.uk;
         root /var/www/vhosts/autodiscover.example.co.uk/htdocs;

         index index.html;

         error_log /var/www/vhosts/autodiscover.example.co.uk/error.log;
         access_log /var/www/vhosts/autodiscover.example.co.uk/access.log合并;

         #位置^〜/ autodiscover / {
                 #index autodiscover.php;
                 #rewrite ^ /。* $ /autodiscover.php last;
         #}

        位置〜* / autodiscover / {
                重写^ / autodiscover / autodiscover \ .xml $ /autodiscover/autodiscover.php最后;
         }

         location = /robots.txt {
                允许全部;
                 log_not_found off;
                 access_logclosures;
         }

        位置〜\ .php $ {
                 try_files $ uri = 404;
                包括/ etc / nginx / fastcgi_params;
                 fastcgi_pass autodiscoverexamplecoukbackend;
                 fastcgi_index index.php;
                 fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
                 fastcgi_param PATH_INFO $ fastcgi_script_name;
                 fastcgi_intercept_errors on;
         }
 }

问题是,当用大写字母A请求时,无法为Autodiscover.xml文件提供服务

如果有人能帮到,那就太好了。

当请求Autodiscover.xml时,它应该将它重新调用autodiscover.php,它将返回.autodisocver.xml。 它这样做,所以它可以服务于不同的领域。

该文件位于/autodiscover/autodiscover.php

Nginx错误日志:

 2017/01/25 21:34:12 [error] 29385#29385:* 93 open()“/var/www/vhosts/autodiscover.example.co.uk/htdocs/Autodiscover/Autodiscover.xml”failed(2:没有这样的文件或目录),客户端:13.67.59.89,服务器:autodiscover.example.co.uk,请求:“POST /Autodiscover/Autodiscover.xml HTTP / 1.1”,主机:“autodiscover.example.co.uk”
 2017/01/25 21:34:13 [error] 29385#29385:* 94 open()“/var/www/vhosts/autodiscover.example.co.uk/htdocs/Autodiscover/Autodiscover.xml”failed(2:没有这样的文件或目录),客户端:13.67.59.89,服务器:autodiscover.example.co.uk,请求:“POST /Autodiscover/Autodiscover.xml HTTP / 1.1”,主机:“autodiscover.example.co.uk”
 2017/01/25 21:45:05 [error] 29385#29385:* 108 stat()“/var/www/vhosts/autodiscover.example.co.uk/htdocs/Autodiscover/Autodiscover.xml”failed(2:没有这样的文件或目录),客户端:13.67.59.89,服务器:autodiscover.example.co.uk,请求:“POST /Autodiscover/Autodiscover.xml HTTP / 1.1”,主机:“autodiscover.example.co.uk”
 2017/01/25 21:45:05 [error] 29385#29385:* 109 open()“/var/www/vhosts/autodiscover.example.co.uk/htdocs/Autodiscover/Autodiscover.xml”failed(2:没有这样的文件或目录),客户端:13.67.59.89,服务器:autodiscover.example.co.uk,请求:“POST /Autodiscover/Autodiscover.xml HTTP / 1.1”,主机:“autodiscover.example.co.uk”
 2017/01/25 21:56:15 [error] 29485#29485:* 121 open()“/var/www/vhosts/autodiscover.example.co.uk/htdocs/Autodiscover/Autodiscover.xml”failed(2:没有这样的文件或目录),客户端:13.67.59.89,服务器:autodiscover.example.co.uk,请求:“POST /Autodiscover/Autodiscover.xml HTTP / 1.1”,主机:“autodiscover.example.co.uk”
 2017/01/25 21:56:16 [error] 29485#29485:* 122 open()“/var/www/vhosts/autodiscover.example.co.uk/htdocs/Autodiscover/Autodiscover.xml”failed(2:没有这样的文件或目录),客户端:13.67.59.89,服务器:autodiscover.example.co.uk,请求:“POST /Autodiscover/Autodiscover.xml HTTP / 1.1”,主机:“autodiscover.example.co.uk”

如果您的目标是将https://autodiscover.example.co.uk/autodiscover/Autodiscover.xml所有请求发送到/var/www/vhosts/autodiscover.example.co.uk/htdocs/autodiscover/autodiscover.php ,你可以使用这个location块:

 location ~ /(?:a|A)utodiscover/Autodiscover.xml { try_files /autodiscover/autodiscover.php =404; } 

在您的configuration中的问题是,您在rewrite语句中使用小写版本,因此当有大写首字母的请求进来时,不匹配。