Назад | Перейти на главную страницу

nginx: апстрим не работает

У меня проблема с моим апстримом. Я возвращаю URL http://backend/f?p=4550 с ошибкой 404 при прохождении https://secure.toto02.com/ords/pls/manitou/4550. Что я пытаюсь сделать, так это сохранить https://secure.toto 02.com/ords/pls/manitou/4550 в навигаторе, пока восходящий поток отправляет запрос http://192.167.1.79:8080/ords/f?p=4550. Я хочу скрыть запрос.

Не знаю, что не так с конфигурационным файлом сервера nginx, может кто-нибудь помочь?

upstream backend {
    server 192.167.1.79:8080;
}

server {
    listen 443 ssl spdy;
    server_name   secure.toto02.com;
    ssl on;
    ssl_certificate      /etc/nginx/ssl/server.crt;
    ssl_certificate_key  /etc/nginx/ssl/server.key;


    location  ~ "^/(.*)/pls/ords/(\d{1,4})$" {
        proxy_pass http://backend/ords/f?p=$2;        
    }
 }

Вы используете переменные внутри proxy_pass директива, которая заставляет перенаправления вашего восходящего сервера напрямую перенаправляться клиенту, поскольку nginx не может угадать, что делать. Вот почему вы получаете такой результат в своем браузере.

Убедитесь, что ваш вышестоящий сервер правильно отвечает на http://192.167.1.79:8080/ords/f?p=4550 используя тот же контекст, что и nginx.

Например, здесь по крайней мере две вещи идут не так:

  • Вы забыли заменить Host заголовок с вашим реальным доменом, поэтому nginx использует Host: backend вместо.
  • Ваш вышестоящий сервер перенаправляет /ords/f?p=4550 в (на основе вашего комментария) /ords/f?p=4550:1:.