Nginx proxy_pass 对 http 或 https 的不同行为

Nginx proxy_pass 对 http 或 https 的不同行为

大家好!我们有一个基于 nginx 的代理,其配置如下:

server {
  server_name  proxy;
  listen 80;
  underscores_in_headers on;
  access_log  /var/log/nginx/access.log  bodylog;

  location / {
    proxy_pass http://X.X.X.X:Y;
  }
}

后端是一个具有第一个登录页面访问权限的应用程序,之后进行搜索。因此问题是:当我们将代理调整为后端的 IP 地址时(proxy_passhttp://XXXX:Y)我们发现登录开始页后浏览器中的所有请求都会经过 nginx 代理服务器,我们可以将它们记录到 access.log 中。

但如果我们想在这里使用https://address.com对于同样的应用程序

  location / {
    proxy_pass https://address.com;
    resolver 127.0.0.11;
  }

我们发现只有登录页面的第一次加载会通过 nginx 代理,但那里的所有其他操作(登录本身、登录后搜索等)都会直接在域上进行https://address.com(不通过代理服务器),因此无法记录在 nginx-proxy access.log 文件中,但我们需要这个!有没有办法像使用 proxy_pass 到 IP 那样改变这种行为?


附加信息:应用程序部署在 kube 集群中,因此当我尝试通过 IP 请求访问它时,会转到 kube-service 以获取具有 LB 类型的应用程序,然后转到应用程序。当我尝试通过 https 请求访问 DNS 名称时,会转到集群中的 nginx-ingress-controller,然后转到 kube-service 以获取应用程序,然后转到应用程序

相关内容