Спробуйте скористатися підтримкою зворотного проксі . Приклад location
розділу:
location / {
proxy_pass http://localhost:8080;
proxy_redirect http://localhost:8080/ /;
proxy_read_timeout 60s;
# May not need or want to set Host. Should default to the above hostname.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Цей приклад передасть усі запити до цього server
блоку на другий сервер, на якому працює localhost:8080
. Це зберігає POST
і, а також має зберігати й інші типи запитів, якщо це коли-небудь стане проблемою.
Проблема полягає в тому, що зовнішні переадресації ніколи не надсилатимуть POST
дані. Це записується у специфікацію HTTP (перевірте розділ 3xx). Будь-який клієнт, який робить це, порушує специфікацію.
Якщо код статусу 301/302 отримано у відповідь на запит, відмінний від GET або HEAD, агент користувача НЕ повинен автоматично перенаправляти запит, якщо він не може бути підтверджений користувачем, оскільки це може змінити умови, за яких запит був виданий .
Я досить впевнений, що більшість браузерів реалізує це, просто змушуючи перенаправлений запит бути GET
запитом. Теоретично, специфікація дозволяє використовувати браузер, який запитав би користувача, чи перенаправляти POST
дані, але я не знаю про те, що зараз робиться.