Назад | Перейти на главную страницу

Как обслуживать Autodiscover.xml с помощью Nginx

Я пытаюсь обслужить файл Autodiscover.xml с помощью Nginx:

Ниже мой конфиг:

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

server {
        listen 80;
        listen 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 combined;

        #location ^~ /autodiscover/ {
                #index autodiscover.php;
                #rewrite ^/.*$ /autodiscover.php last;
        #}

        location ~* /autodiscover/ {
                rewrite ^/autodiscover/autodiscover\.xml$ /autodiscover/autodiscover.php last;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        location ~ \.php$ {
                try_files $uri =404;
                include /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;
        }
}

Проблема в том, что он не может обслуживать файл Autodiscover.xml при запросе с прописной буквой A

Если бы кто-нибудь мог помочь, было бы здорово.

Когда запрашивается 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: No such file or directory), client: 13.67.59.89, server: autodiscover.example.co.uk, request: "POST /Autodiscover/Autodiscover.xml HTTP/1.1", host: "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: No such file or directory), client: 13.67.59.89, server: autodiscover.example.co.uk, request: "POST /Autodiscover/Autodiscover.xml HTTP/1.1", host: "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: No such file or directory), client: 13.67.59.89, server: autodiscover.example.co.uk, request: "POST /Autodiscover/Autodiscover.xml HTTP/1.1", host: "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: No such file or directory), client: 13.67.59.89, server: autodiscover.example.co.uk, request: "POST /Autodiscover/Autodiscover.xml HTTP/1.1", host: "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: No such file or directory), client: 13.67.59.89, server: autodiscover.example.co.uk, request: "POST /Autodiscover/Autodiscover.xml HTTP/1.1", host: "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: No such file or directory), client: 13.67.59.89, server: autodiscover.example.co.uk, request: "POST /Autodiscover/Autodiscover.xml HTTP/1.1", host: "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;
}

Проблема в вашей конфигурации заключается в том, что вы используете строчную версию в rewrite оператор, и поэтому совпадения нет, когда приходит запрос с заглавной первой буквой.