Запрос к 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 шт):
Не нужно тут никакого лишнего 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;
(подробнее на английском языке здесь).