Nginx
如何使用 Nginx 提供 Autodiscover.xml
我正在嘗試使用 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
,因此當帶有大寫首字母的請求進入時不匹配。