Я пытаюсь построить архитектуру/инфраструктуру на Amazon Web Services. Сегодня у меня есть EC2, работающий как шлюз, с NGINX в фоновом режиме. Кстати, я новичок в NGINX.
На прошлой неделе у меня был этот файл конфигурации NGINX:
server {
listen 80;
# I put * for hide the real domain name
server_name ******.com.ar www.******.com.ar;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://private.ip.1:80/";
}
}
И это сработало отлично! Когда я захожу на www.domain.com.ar, я получаю перенаправление на частный IP 1 через порт 80.
Но сейчас мне нужно немного изменить файл конфигурации.
1) Во-первых, мне нужно перенаправить некоторые известные пути на частный IP-адрес 1 (например, /company, /portfolio, /services, /contact и subsequences: /company/ourvision, /services/software, /contact/workwithus). Я использую NodeJS, а не PHP.
2) И если ни один из предыдущих путей не совпадает, мне нужно получить первый сегмент URI в качестве подстановочного знака (например, http://domain.com.ar/*) соответствует только этим символам: A-z0-9 и отправляет на частный ip 2 на порт 3000, также мне нужно отправить подстановочное слово тоже (например, http://private.ip.2:3000/wildcard-word)
Я только пытался добиться успеха по второму пункту, но не мог с этим справиться.
server {
listen 80;
server_name ******.com.ar www.******.com.ar;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://private.ip.1:80/";
}
location ~ ^/(.*)/?$ {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://private.ip.2:3000/$1";
}
}
Но это не работает. Когда я захожу на http://example.com.ar, я иду прямо на частный IP 2 на порту 3000 Кстати, в другом случае я получаю следующую ошибку, когда использую команду nginx -t: «proxy_pass» не может иметь часть URI в расположении, заданном регулярным выражением, или внутри именованного местоположения< /эм>
Итак, может ли кто-нибудь помочь этому нубу решить его проблему? Заранее спасибо. Я позволю ссылки, которые я читал ниже:
/foo/bar
, должен быть отправлен на*.2:3000/foo
(с полностью удаленным/bar/
)? - person Richard Smith   schedule 21.04.2019/company
или/company/workwithus
, NGINX должен перенаправить меня наip1:80/company
(илиip1:80/company/workwithus
, как угодно)... но когда я иду по пути вроде/other_word
(подстановочное слово, не объявленное в конфигурационном файле NGINX) Мне нужно сделать редирект наip2:3000/other_word
... Теперь вы меня поняли? Спасибо, бро! - person Alexander Vari   schedule 21.04.2019