我正在尝试使用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语句中使用小写版本,因此当有大写首字母的请求进来时,不匹配。