nginx: пост не работает при использовании пересылки прокси - PullRequest
0 голосов
/ 14 ноября 2018

Попробуйте выяснить правильную конфигурацию nginx, чтобы он мог работать с некоторым префиксом в URL.

Ранее работали со следующими.

  1. 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.

  1. HTML-форма

  2. 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 })

  3. внутренний маршрут

    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();

Это не работает.

...