转发客户端的请求头

我有两个docker镜像,一个用于接收客户端请求的nginx,这个请求包含客户端的IP地址User-Agent。 另一个图像是一个asp.net应用程序,用于接收从nginx发送的具有客户端信息的请求。 我的问题是收到的请求包含nginx信息而不是客户端信息。 下面显示了nginx docker镜像的configuration。

server { access_log /var/log/nginx/access-default.log; error_log /var/log/nginx/error-default.log; listen 80; location / { proxy_pass http://172.18.0.2:5000; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header Origin $http_origin; proxy_set_header User-Agent $http_user_agent; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_cache_bypass $http_upgrade; } } 

你的configuration是正确的。 我认为在你的asp.net核心应用程序的问题。 请检查以下内容:

要接收IP地址:

var ipAddress = context.Connection.RemoteIpAddress;

要接收用户代理:

var userAgent = context.Request.Headers["User-Agent"];

这是我用来成功通过nginx将请求传递给asp.net核心应用程序的configuration:

  location / { proxy_pass http://myhost.com; proxy_buffering off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } 

与http和websockets很好地工作。 我用它作为软件负载均衡器仿真。