Nginx отправляет 404 на бэкэнд

by itisgood

Nginx – отличный веб-сервер, но он также замечателен как обратный прокси, и  это отлично когда вы делаете обе вещи одновременно.

Если вы хотите, чтобы Nginx выполнял роль веб-сервера, но если есть ошибка, ошибка 404 вы можете передать вызов Apache или любому другому серверу.

    location / {
        index index.html
        try_files $uri $uri/ @apache;
    }

Это скажет Nginx, чтобы он обслуживал все страницы и папки, которые соответствуют файлу или папке на диске, но если он не может найти его, он перейдет на @apache

И @apache выглядит так:

location @apache {
		proxy_pass http://1.2.3.4:81;
		proxy_redirect off;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}

Просто измените IP и порт в директиве proxy_pass, чтобы соответствовать вашим требованиям.

я обнаружил, что для того, чтобы Nginx отправил все ошибки «File Not Found 404» на бэкэнд, вам также нужно добавить эту строку в блок server

error_page   404  = @apache;

Финальный блок может выглядеть так:

server {
	listen 80;
	root /var/www;
	index index.html;
	server_name www.garron.me;
	error_page   404  = @apache;
	location / {
		try_files $uri $uri/ @apache;
	}
	location @apache {
		proxy_pass http://localhost:8080;
		proxy_redirect off;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_cache wwwgarron;
                proxy_cache_valid 200 301 302 5s;
                proxy_cache_use_stale updating error timeout invalid_header http_500;
                proxy_ignore_headers Cache-Control Expires;
	}
}

 

You may also like

Leave a Comment