#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;
}
}