Запрос к nginx, запрашиваем один файл, подгружаем другой

Буквально недавно стал изучать nginx. До этого сидел на апаче...

В чем рассчитываю разобраться, если в апатче(htaccess). Прописывал правило

RewriteRule ^sitemap\.xml$ sitemap\.php [NC,L]

И все работало, то как в кофиге(сайта) nginx прописать тоже самое?

location /sitemap.xml {
    rewrite ^/.* /sitemap.php permanent;
}

Просто переадресовывает на файл /sitemap.php в url.

По идеи должно исполнить и отдать содержимое...

Сразу следующий вопрос, ниже прописан следующий блок

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
}

Не понимаю, как верно прописать первое правило, где именно. Вне данного блока или же в данном блоке возможно прописать. Как то не понятно...

Если возможно там и там. То как лучше?


Ответы (1 шт):

Автор решения: Ivan Shatsky

Не нужно тут никакого лишнего rewrite. Можно сделать сразу вот так:

location = /sitemap.xml {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME /full/path/to/sitemap.php;
    fastcgi_pass /path/to/php-fpm.sock;
}

P.S. Директива

try_files $uri $uri/ =404;

помимо отрицательного влияния на производительность, никакого особого смысла не имеет, кроме того, что в неявном виде оказывает тот же эффект, что и директива

log_not_found off;

(подробнее на английском языке здесь).

→ Ссылка