if
исполняется только содержимое блока if.add_header
.try_files
не наследуется и исполняется только когда уловие if
ложно.location
.if
в контексте server
таких проблем нет.if
на уровень server
и всё заработает как ожидалось.server {
set $avif_image_path "";
if ($http_accept ~* "image/avif") {
set $avif_image_path "$uri.avif";
}
set $webp_image_path "";
if ($http_accept ~* "image/webp") {
set $webp_image_path "$uri.webp";
}
location ~* \.(png|jpe?g|gif)$ {
add_header Vary Accept;
try_files $avif_image_path $webp_image_path $uri =404;
}
if
и переписать на map
. Или хотя бы отобразить по ссылке на file.jpeg, сам file.gif
map $uri $gif {
default $uri;
~^(.*)\.jpeg$ "$1.gif";
}
server {
location @original {
try_files $image_folder_1$uri $image_folder_0$uri $image_folder_1$gif $image_folder_0$gif @errors;
}
Директивы break, if, return, rewrite и set обрабатываются в следующем порядке:
последовательно выполняются директивы этого модуля, описанные на уровне server;
в цикле:
ищется location по URI запроса;
последовательно выполняются директивы этого модуля, описанные в найденном location;
цикл повторяется, если URI запроса изменялся, но не более 10 раз.
server {
if (!-e $request_filename) {
rewrite ^(.*)$ /bitrix/urlrewrite.php last;
}
location ~* ^/bitrix/subws/ {
proxy_pass http://push-upstream;
...
}
if
и rewrite
, описанные на уровне server
.location ~* ^/bitrix/subws/ {
запрос уже никогда не попадёт.location / {
if (-f /var/www/bitrix/index.php) {
root /var/www/bitrix;
break;
}
if (-f /var/www/bitrix/bitrixsetup.php) {
root /var/www/bitrix;
break;
}
if (-f /var/www/bitrix/restore.php) {
root /var/www/bitrix;
break;
}
try_files $uri $uri/ @bitrix;
root /var/www/bitrix;
}
location @bitrix {
fastcgi_pass php-upstream;
location @bitrix
. В итоге ошибка 404.if (-f /var/www/bitrix/index.php) {
root /var/www/bitrix;
break;
}
if (-f /var/www/bitrix/bitrixsetup.php) {
root /var/www/bitrix;
break;
}
if (-f /var/www/bitrix/restore.php) {
root /var/www/bitrix;
break;
}
if (!-e $request_filename) {
rewrite ^(.*)$ /bitrix/urlrewrite.php last;
}
user www-data;
на user ubuntu;
sudo usermod -aG ubuntu www-data
error_page 418 = @proxy;
if ($request_method = 'POST') {
return 418;
}
location @proxy {
proxy_pass http://site.ru;
}
location ^~ /constructor {
if (...) {
}
try_files ...;
}
map $platform $front_path {
default /home/www/redesigned_spa_desktop/dist;
mobile /home/www/redesigned_spa/dist;
}
server {
location ^~ /constructor {
alias $front_path;
try_files $uri /constructor/index.html;
}
map $args $_args {
~^redirect=[^&]*&?(.*) $1;
~^(.*?)&redirect=[^&]*(&?.*) $1$2;
}
server {
location = / {
error_page 418 = @rewrite;
if ($arg_redirect ~ '^(?<_url>https?://[\w.-]+)') {
return 418;
}
}
location @rewrite {
rewrite ^ /?$_args? break;
proxy_pass $_url;
proxy_http_version 1.1;
proxy_ssl_server_name on;
resolver 8.8.8.8;
}
try_files $imgdir/$imgfile /../static$uri /../static1$uri /../static2$uri /../static3$uri @image;
proxy_set_header Host $host;
.api.vk.com
на site.ru
и сервер вк честно отвечает что нет у него такого site.ru
.proxy_set_header Host $host;
http {
proxy_cache_path /tmp/nginx_cache keys_zone=one:10m;
server {
listen 80;
server_name sandbox6.dev.ru;
location / {
return 403 ;
}
location ~ ^/api/v2/qa/diff/(?<cache_key>[0-9]+) {
proxy_pass http://test.qa.ru;
proxy_http_version 1.1;
rewrite "^/api/v2/qa/diff/(.*)" /api/push/diff/$1 break;
add_header X-Proxy-Cache $upstream_cache_status;
proxy_cache one;
proxy_cache_valid 200 2h;
proxy_cache_key $scheme$proxy_host$cache_key$is_args$args;
}
}
rewrite ^/url1/(url2/url3/) https://domain2.ru/$1 permanent;
if ($request_uri ~ '^/url1/(url2/url3/.*)') {
return 301 https://domain2.ru/$1;
}
root /root/pages;
location = / {
alias /root/index.html;
}
location / {
}
proxy_hide_header X-Frame-Options;
add_header
.