Попробуйте выяснить правильную конфигурацию nginx, чтобы он мог работать с некоторым префиксом в URL.
Ранее работали со следующими.
nginx conf
location / {
client_max_body_size 30M;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $proxy_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_pass http://172.17.0.2:3000/;
proxy_redirect off;
}
В основном он перенаправляет в док-контейнер с портом 3000.
HTML-форма
AJAX для отправки
* * 1 022 event.preventDefault ();
var form = document.getElementById ('request_form'),
form_data = новые FormData (форма),
form_url = '/' + $ ('#' + request + '_form') [0] .action.split ('/'). pop ();
$. Ajax ({
url: form_url,
тип: 'POST',
данные: form_data,
dataType: 'json',
кодировать: правда,
кеш: ложь,
contentType: false,
processData: false
})
внутренний маршрут
router.post ('/ post_handler', функция (запрос, ответ) {
На данный момент все работает. Теперь мне нужно установить другой докер-контейнер на той же машине. Поэтому я думаю, что, возможно, мне стоит использовать разные URL для их дифференциации.
nginx conf
location /service1 {
client_max_body_size 30M;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $proxy_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_pass http://172.17.0.2:3000/;
proxy_redirect off;
}
Я все еще могу получить нужную страницу. Но я не знаю, как сделать это правильно для почтового URL. Это то, что я пытался.
var form = document.getElementById('request_form'),
form_data = new FormData(form),
form_url = '/service1/' + $('#' + request + '_form')[0].action.split('/').pop();
Это не работает.