Назад | Перейти на главную страницу

Nginx переписывает http-реферер на https

Я использую директиву proxy_pass для восходящего сервера https. Прокси-сервер предназначен для клиентов LAN. Однако у меня проблема с вышестоящим приложением django, отклоняющим запросы HTTP POST из-за небезопасного заголовка реферера

https://github.com/django/django/blob/9c9ef5835200a1bc6410d2769b9699baba9f9a8b/django/middleware/csrf.py#L249

Можно ли переписать http_referer заголовок на https? пример

 http://192.168.1.5/application/page -> https://upstream.backend/application/page

Я более опытен с Apache. Но файлы .conf во многом такие же.

Итак, вы в основном хотите переписать все HTTP-запросы на https?

А 192.168.1.5 разрешает upstream.backend в вашем DNS?

Если это так, и вы используете последние версии, вам сначала нужно будет сгенерировать сертификат SSL для использования. Достаточно просто, вы предполагаете, что вы используете дистрибутив Linux, поэтому я проведу вас через оболочку или ssh:

  1. cd / etc / nginx
  2. sudo openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout /etc/nginx/cert.key -out /etc/nginx/cert.crt

на этом этапе введите свою информацию, и будет сгенерирован 2048-битный (неподписанный) сертификат, который вы можете использовать для порта nginx 443. Поскольку вы находитесь в локальной сети, покупка сертификата SSL будет пустой тратой.

Отсюда вам нужно заполнить / etc / nginx / sites-enabled / default всей приведенной выше информацией, такой как домены, расположение сертификатов (не забудьте указать nginx для прослушивания порта 443). Следующий шаг - прокси-сервер :

... расположение / {

proxy_set_header        Host $host;
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_pass          http://192.168.1.5/application/page;
proxy_read_timeout  90;

proxy_redirect      http://192.168.1.5/application/page https://upstream.backend/application/page;

} ...

ПРИМЕЧАНИЕ. Это может сработать, а может и не сработать, так как я пропустил пару вещей, которые обычно не использовал бы. Я бы попробовал это. Если nginx не работает "приложение / страница", попробуйте просто http://192.168.1.5 и https: //upstream.backend.

Если ничего не помогает, найдите «jenkins», с которым я не знаком.

Ура