我正在尝试使用 Nginx 提供 Autodiscover.xml 文件:
下面是我的配置:
上游 autodiscoverexamplecoukbackend { 服务器 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; 根 /var/www/vhosts/autodiscover.example.co.uk/htdocs; 索引 index.html; 错误日志/var/www/vhosts/autodiscover.example.co.uk/error.log; access_log /var/www/vhosts/autodiscover.example.co.uk/access.log 结合; #location ^~ /autodiscover/ { #index 自动发现.php; #rewrite ^/.*$ /autodiscover.php 最后; #} 位置 ~* /autodiscover/ { 最后重写 ^/autodiscover/autodiscover\.xml$ /autodiscover/autodiscover.php; } 位置 = /robots.txt { 允许全部; log_not_found 关闭; access_log 关闭; } 位置 ~ \.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 开启; } }
问题是它无法在使用大写 A 请求时提供 Autodiscover.xml 文件
如果有人可以提供帮助,那就太好了。
当请求 Autodiscover.xml 时,它应该将其重新发送到 autodiscover.php,它将返回 .autodisocver.xml。它这样做是为了可以服务于不同的域。
该文件位于 /autodiscover/autodiscover.php
Nginx 错误日志:
2017/01/25 21:34:12 [错误] 29385#29385: *93 open() "/var/www/vhosts/autodiscover.example.co.uk/htdocs/Autodiscover/Autodiscover.xml" 失败 (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 [错误] 29385#29385: *94 open() "/var/www/vhosts/autodiscover.example.co.uk/htdocs/Autodiscover/Autodiscover.xml" 失败 (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 [错误] 29385#29385: *108 stat() "/var/www/vhosts/autodiscover.example.co.uk/htdocs/Autodiscover/Autodiscover.xml" 失败 (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 [错误] 29385#29385: *109 open() "/var/www/vhosts/autodiscover.example.co.uk/htdocs/Autodiscover/Autodiscover.xml" 失败 (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 [错误] 29485#29485: *121 open() "/var/www/vhosts/autodiscover.example.co.uk/htdocs/Autodiscover/Autodiscover.xml" 失败 (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 [错误] 29485#29485: *122 open() "/var/www/vhosts/autodiscover.example.co.uk/htdocs/Autodiscover/Autodiscover.xml" 失败 (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
如果您的目标是发送对to的所有请求/var/www/vhosts/autodiscover.example.co.uk/htdocs/autodiscover/autodiscover.php
,您可以使用此location
块:您的配置中的问题是您在语句中使用小写版本
rewrite
,因此当带有大写首字母的请求进入时不匹配。