Nginx Как мне перенаправить на обратный прокси-сервер по местоположению

#nginx #nginx-reverse-proxy #nginx-config

#nginx #nginx-reverse-proxy #nginx-config

Вопрос:

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

Итак, допустим, мой домен subdomain.domain.com .

При загрузке subdomain.domain.com/ это должно обслуживать статические файлы.

При загрузке subdomain.domain.com/example1/req1/req2 это должно перенаправляться на 127.0.0.1:3000/req1/req2 .

При загрузке subdomain.domain.com/example2/req1/req2 это должно перенаправляться на 127.0.0.1:8080/req1/req2 .

Но моя конфигурация перенаправляет subdomain.domain.com/example1/req1/req2 на 127.0.0.1:3000/example1/req1/req2 результирующую ошибку. (nodejs возвращает, не удается ПОЛУЧИТЬ / example1)

Как я должен правильно записать этот файл nginx conf?

Комментарии:

1. Есть какие — нибудь результаты nginx -t ?

2. тест nginx -t прошел успешно

3. Если один из ответов решает ваш вопрос, пожалуйста, отметьте его как таковой с помощью флажка слева от него! Если вы нашли ответ самостоятельно или с помощью какой-то комбинации, вы также можете ответить на свой собственный вопрос и отметить его примерно через 2 дня! Это дополняет объем знаний и может помочь вам завоевать репутацию на сайте!

Ответ №1:

Попробуйте использовать директиву rewrite в блоке location.

Что-то вроде:

 location /example1/ {
  rewrite     ^/example1/(.*)$ /$1 break;
  proxy_pass  http://xxxxxx;
}
 

Вы можете проверить документы, связанные с модулем перезаписи, по адресу http://nginx.org/en/docs/http/ngx_http_rewrite_module.html

Ответ №2:

Вам нужно добавить приведенный ниже фрагмент кода в ваш nginx.conf.

     server subdomain.domain.com;
        location / {
            rewrite     ^/example1/(.*)$ /$1 break;
            proxy_pass http://127.0.0.1:3000;
        }
    }