Помогите с nginx error=404 to backend

D
На сайте с 05.06.2007
Offline
155
3348

Необходимо создать конфиг при котором при отсутствии статики обрабатываемой nginx-ом, запрос на обработку ошибки отправится апачу. На данный момент я это реализовал таким способом, но хочется бэкэнд задавать 1 раз, а не 2 раза. Или может быть кто-то знает ещё более простой метод реализовать такую конструкцию?

server {

listen 80;
root /home/user/site.ru;
location / {
access_log off;
proxy_set_header Host $host;
proxy_set_header Remote-Addr $remote_addr;
proxy_pass http://127.0.0.1:8080;
}

location @backend {
access_log off;
proxy_set_header Host $host;
proxy_set_header Remote-Addr $remote_addr;
proxy_pass http://127.0.0.1:8080;
}

location ~* ^.+\.(jpg|jpeg|gif|png|bmp|ico|css|js|zip|tgz|gz|tar|rar|bz2|doc|rtf|xls|exe|pdf|ppt|txt)$ {
try_files $uri @backend;
}

}
Написал не мало шедевров ;)
R
На сайте с 14.02.2010
Offline
77
#1

try_files $uri @backend;

или

error_page 404 = @backend;

D
На сайте с 05.06.2007
Offline
155
#2

Ну я так и сделал, а как можно направить на бекэнд основной location / ?

location / {
access_log off;
proxy_set_header Host $host;
proxy_set_header Remote-Addr $remote_addr;
proxy_pass http://127.0.0.1:8080;
}

как нибудь так можно? в доках не нашёл подобного (

location / {
@backend;
}
R
На сайте с 14.02.2010
Offline
77
#3

try_files @backend =404;

или

try_files $uri @backend =404;

D
На сайте с 05.06.2007
Offline
155
#4

Нет, это совсем не то и не работает. Видимо данной реализации перенаправления location не предусмотрено в nginx.

R
На сайте с 14.02.2010
Offline
77
#5

что значит не работает? у меня работает, да у всех работает

Dimanych:
Необходимо создать конфиг при котором при отсутствии статики обрабатываемой nginx-ом, запрос на обработку ошибки отправится апачу.

tru_files $uri @backend;

вначале осуществляется попытка открыть файл по $uri, в случае неудачи запрос передается на @backend; что тут не так? или вы требования не правильно озвучили или не то что-то делаете

D
На сайте с 05.06.2007
Offline
155
#6

Эм, я ведь написал что я реализовал это в указанном выше конфиге, но мне мужно задавать бекэнд 1 раз, а не 2. Посмотрите мой конфиг внимательно, там уже в статике при ошибках идёт перенаправление на бекенд:

location ~* ^.+\.(jpg|jpeg|gif|png|bmp|ico|css|js|zip|tgz|gz|tar|rar|bz2|doc|rtf|xls|exe|pdf|ppt|txt)$ {
try_files $uri @backend;
}

а мне желательно для остальных запросов не задавать основной location

location / {
access_log off;
proxy_set_header Host $host;
proxy_set_header Remote-Addr $remote_addr;
proxy_pass http://127.0.0.1:8080;
}

а направить эти запросы как то сразу на бекэнд, по сути тоже самое, но конфиг не такой большой.

location / {
@backend;
}

но это видимо никак не предусмотрено ((

R
На сайте с 14.02.2010
Offline
77
#7

ну так и напишите

location / {

try_files @backend =404;

}

D
На сайте с 05.06.2007
Offline
155
#8
r0mik:
ну так и напишите
location / {
try_files @backend =404;
}

Вы меня до сих пор не поняли, это отправит все запросы с ошибками 404 на @backend, а мне нужно вообще все запросы туда отправить, но не указывая такой же конфиг как в @backend ;)

Ладно, видимо нет такой возможности, только созданием 2х аналогичныъ конфигов (

R
На сайте с 14.02.2010
Offline
77
#9

омг, напишите 2 раза @backend

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий