X-Real-IP из запроса.x-real-ip, X-REAL-IP, X-ReAl-iP и т.п.      server {
    listen 443 ssl;
    server_name toorrp4.fvds.ru;
    # тут конфигурация сервера
}
# а тут редиректим всё остальное
server {
    listen 443 default_server ssl;
    return 301 https://toorrp4.fvds.ru$request_uri;
}path в запросе есть всегда.map $uri $clean_uri {
    default $uri$is_args$args;
    "~(?'_'.+)/$" $_$is_args$args;
}
server {
    if ($request_uri != $clean_uri) {
        return 302 $clean_uri;
    }
}$ curl -s -o /dev/null -w '%{http_code}: %{redirect_url}\n' http://localhost:7777///foo
302: http://localhost:7777/foo
$ curl -s -o /dev/null -w '%{http_code}: %{redirect_url}\n' http://localhost:7777/foo//bar/
302: http://localhost:7777/foo/bar
$ curl -s -o /dev/null -w '%{http_code}: %{redirect_url}\n' http://localhost:7777///foo?q=42
302: http://localhost:7777/foo?q=42
$ curl -s -o /dev/null -w '%{http_code}: %{redirect_url}\n' http://localhost:7777/foo//bar/?q=42
302: http://localhost:7777/foo/bar?q=42
$ curl -s -o /dev/null -w '%{http_code}: %{redirect_url}\n' http://localhost:7777/foo
200: 
$ curl -s -o /dev/null -w '%{http_code}: %{redirect_url}\n' http://localhost:7777/foo?q=42
200:map:map $http_accept $avif_image_path {
  default "";
  ~image/avif "$uri.avif";
}
map $http_accept $webp_image_path {
  default "";
  ~image/webp "$uri.webp";
}
server {
  # ...
  location ~* \.(png|jpe?g|gif)$  {
    add_header Vary Accept;
    try_files $avif_image_path $webp_image_path $uri =404;
  }
  # ...
}# вместо настоящих серверов указываем тут промежуточные,
# которые определены в этом же конфиге ниже
upstream valid {
  server 127.0.10.1:80;
  server 127.0.10.2:80;
}
# промежуточный сервер
server {
  listen 127.0.10.1:80;
  location / {
    proxy_pass http://validator.amd.ru;
    # тут nginx автоматически добавляет proxy_set_header Host validator.amd.ru;
    # (берёт имя домена из proxy_pass)
  }
}
# второй промежуточный сервер
server {
  listen 127.0.10.2:80;
  location / {
    proxy_pass http://validator.bm.ru;
    # тут nginx автоматически добавляет proxy_set_header Host validator.bm.ru;
  }
}
# тут ничего не меняем
server {
  ...
  location /api/valid {
    proxy_pass http://valid/api/validators;
    # теперь запросы проксируются в промежуточные сервера, которые проксируют
    # в настоящие с правильным именем домена
  }
}listen, не применяются при «мягком рестарте» (systemctl reload nginx, nginx -s reload и т.п.).listen nginx нужно полностью перезапускать nginx (systemctl restart nginx и т.п.).      server {
    ...
    # наследуется во все location где явно не задано
    auth_request .auth;
    location ^~ /unique_domain_without_user_agent_condition {
        # тут auth_request не вызываем
        auth_request off;
        return 402;
    }
    location .auth {
        # проверка UA
        if ($http_user_agent !~* "test")  {
            return 403;
        }
        return 200;
    }
}$ ls -l /etc/nginx/sites-enabled/default 
lrwxrwxrwx 1 root root 34 ott 24 10:54 /etc/nginx/sites-enabled/default -> /etc/nginx/sites-available/defaultlocation = /test {
    return 302 /test/;
    # или 301
}/path → /path/ работает только если запрос внутри location обрабатывается одной из *_pass директив.
nginx.org/ru/docs/http/ngx_http_core_module.html#l...
[...]
Если location задан префиксной строкой со слэшом в конце и запросы обрабатываются при помощи proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, memcached_pass или grpc_pass, происходит специальная обработка. В ответ на запрос с URI равным этой строке, но без завершающего слэша, будет возвращено постоянное перенаправление с кодом 301 на URI с добавленным в конец слэшом.
[...]
map $check_params $resticted_params {
	default		0;
	one:two		1;
}
server {
	# ...
	location /ajax {
		set $check_params "$arg_paramone:$arg_paramtwo";
		auth_request /check_params;
		allow 1.1.1.1;
		allow 1.1.1.2;
		deny all;
		satisfy any;
		# proxy_pass или что-то что нужно
	}
	location = /check_params {
		internal;
		if ($resticted_params) {
			return 403;
		}
		return 200;
	}
}map $uri $APP_SETTINGS {
  default "";
  ~^/path1/ app-settings-12;
  ~^/path2/ app-settings-100500;
}
server {
  location ~\.php$ {
    fastcgi_pass ...;
    fastcgi_param APP_SETTINGS $APP_SETTINGS if_not_empty;
    ...
  }
}server {
    listen 127.0.0.1:4000;
    root /var/www/html;
    location / {
      proxy_pass http://127.0.0.1:3000;
      error_page 502 = @local;
    }
    location @local {
    }
}upstream (видимо Сергей Соколов имел в виду его):upstream backend {
    server 127.0.0.1:3000;        # основной сервер
    server 127.0.0.1:4001 backup; # сервер на случай неработающего основного
}
# запасной сервер, просто отдаёт статику
server {
    listen 127.0.0.1:4001;
    root /var/www/html;
}
# Это наш сервер
server {
    listen 127.0.0.1:4000;
    location / {
      proxy_pass http://backend;
    }
}