Nginx 将 http referer 重写为 https

Nginx 将 http referer 重写为 https

我正在使用 proxy_pass 指令来连接上游 https 服务器。代理服务器适用于 LAN 客户端。但是我遇到了一个问题,上游 django 应用程序由于 referer 标头不安全而拒绝 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

答案1

我对 Apache 更有经验。但是 .conf 文件大体相同。

那么,您基本上想将所有 http 请求重写为 https?

并且 192.168.1.5 在您的 DNS 中解析为 upper.backend 吗?

如果是这种情况,并且您正在使用最新版本,那么您首先需要生成一个 SSL 证书以供使用。很简单,假设您正在使用 Linux 发行版,因此我将引导您通过 shell 或 ssh 执行此操作:

  1. /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.5https://upstream.backend

如果一切都失败了,请查找我不熟悉的“詹金斯”。

干杯

相关内容