Nginx

如何使用 Nginx 提供 Autodiscover.xml

  • January 25, 2017

我正在嘗試使用 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塊:

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

您的配置中的問題是您在語句中使用小寫版本rewrite,因此當帶有大寫首字母的請求進入時不匹配。

引用自:https://serverfault.com/questions/828635