Рейтинг:1

Nginx преобразует запрос POST в запрос GET, а proxy_pass

флаг es

У меня есть 3 сервера: А, Б, С. Подробности:

  1. Сервер A: сервер NGINX, URL: https://test1.example.com
  2. Сервер B: сервер NGINX, на котором размещено веб-приложение NodeJS, URL: http://test2.example.com
  3. Сервер C: сервер Apache2, на котором размещено веб-приложение Django, URL: http://test3.example.com

Сервер A (сервер NGINX) — это открытый общедоступный сервер, выступающий в качестве балансировщика нагрузки с использованием proxy_pass. Сервер B (сервер NGINX) имеет форму и отправляет ее через запрос POST на сервер C (сервер UWSGI Django с использованием Apache2). Запрос от сервера B с URL: https://test1.example.com/register на сервер C, но сервер A преобразует его в запрос GET.

Итак, я получаю 2 журнала запросов, один с POST, а другой с GET с тем же путем "/register"

Установка изображена на рисунке (Схема в конце поста).

Конфигурация выглядит следующим образом:

  1. Сервер А:

    сервер {
    
       слушать 443 ssl http2;
       слушать [::]:443 ssl http2;
       имя_сервера test1.example.com;
    
        ssl_certificate /etc/ssl/test1/test1.example.com.crt;
        ssl_certificate_key /etc/ssl/test1/test1.example.com.key;
    
       # Конфигурация прокси/балансировщика нагрузки`
    
       # Проверка запроса`
    
            место расположения / {
              proxy_pass http://test2.example.com;
            }
    
            местоположение /регистрация/{
                    proxy_pass http://test3.example.com;
            }
    }
    
  2. Сервер Б:

    сервер {
    
        слушать 80 default_server;
    
        слушать [::]:80 default_server;
    
        корень /var/www/html;
    
        # Добавьте index.php в список, если вы используете PHP
        индекс index.html index.htm;
    
        имя_сервера test2.example.com;
    
        место расположения / {
                #try_files $uri $uri/ =404;
                 try_files $uri $uri//index.html;
        }
    
        журнал_доступа /var/log/nginx/access.log;
        журнал_ошибок /var/log/nginx/error.log;
    

    }

  3. Сервер С:

    <Виртуальный хост *:80>
    имя_сервера test3.example.com
    Администратор сервера [email protected]
    Корень документа /var/www/test
    
    Псевдоним /static/ /var/www/test/webapp/static/
    Псевдоним /media/ /var/www/test/media/
    
    WSGIScriptAlias//var/www/test/webapp/wsgi.py
    WSGIDaemonProcess cdac.in python-path=/var/www/test\
        python-home=/var/www/test/venv процессы=5 потоков=8
    WSGIProcessGroup cdac.in
    <Каталог /var/www/test/webapp/>
        Параметры - Индексы
        Отклонить заказ, разрешить
        Разрешить от всех
        Требовать все предоставленные
    </Каталог>
    
    Информация об уровне журнала
    
    # PROJECT_NAME используется для разделения файлов журнала этого приложения.
    Журнал ошибок /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log вместе
    

Где я ошибаюсь.

Схема установки

djdomi avatar
флаг za
после небольшого поиска я нашел это https://serverfault.com/questions/312111/how-do-i-get-nginx-to-forward-http-post-requests-via-rewrite, возможно, это поможет вам
Amarjeet Sharma avatar
флаг es
@djdomi Пробовал, не работает

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.