404 делать редирект в самом вебсервере?
конструкция
location /test {
proxy_pass ...
error_page 404 = @404;
}
не хочет работать
http://nginx.org/r/proxy_intercept_errors/ru
Как проверяли?
location /test { proxy_pass ... error_page 404 = @404; } location @404 { return 404 https://site.ru; }
и где тут proxy_intercept_errors on?
убрал тк не увидел результата
так как результат проверяли? что curl -i показывал?
внес изменения и запросил тестовый стенд как еще )
когда не работает то, что должно работать, то наиболее вероятная причины: - не перезагружена конфигурация - изменили не ту конфигурацию или не на том сервере - запрашивают не то, что изменяют (не тот сервер, не тот виртуальный сервер, не тот локейшен) - запрашивают кэш вместо реального сервера
изменения внес веб сервер перегрузил
у nginx на такую конфигурацию тест есть: http://hg.nginx.org/nginx-tests/file/tip/proxy_intercept_errors.t он успешно проходит и проходил во всех версиях
тут пример с ответом короткого сообщения а мне нужно зайти в приложение через proxy_pass и вернуть ответ от него
но в вашей конференции вы этого не делаете, а делаете return
можете показать минимальный полный конфиг nginx, на котором этот баг воспроизводится? желательно с использованием интерфейса 127.0.0.1 и портов 8080, 8081, 8082. тестовый стенд для этого запрашивать не обязательно, достаточно будет localhost для воспроизведения ошибки. минимальный конфиг - это чтобы в нем не было вообще ничего лишнего, что не требуется для воспроизведения бага и чтобы вывод команды nginx -T занимал как можно меньше места. а также последовательность команд консоли, с помощью которой можно увидеть этот баг. например, curl -v http://127.0.0.1:8080/200 curl -v http://127.0.0.1:8080/404 что ожидали получить в ответ и что в действительности получили. в таком случае можно будет быстро понять, где именно ошибка - в nginx, в вашем конфиге или в ваших ожиданиях о том, как этот конфиг должен работать. что-то вроде такого: http { server { listen 8080; location /200 { # ... # ... proxy_pass http://127.0.0.1:8081; # ... } location /404 { # ... # ... proxy_pass http://127.0.0.1:8082; # ... } } server { listen 8081; location / { return 200 "OK"; } } server { listen 8082; location / { return 404 "Not Found"; } } }
Обсуждают сегодня