转发 IP 地址 - NGINX 和 IIS

Forward IP Addresses - NGINX and IIS

我们有一个正常工作的 NGINX 将我们的外部用户重定向到我们的 IIS 服务器。问题是 IIS 看到的 IP 是 NGINX 机器,而不是来自外部用户的 IP。我们的日志中充满了不正确的“10.0.0.2”IP。

显示了一个类似的配置文件。我们已经包含了“proxy_set_header”行。

这个配置文件是否正确? IIS服务器应该做什么?我们应该只在 web.config 文件中包含一些主题吗?如果是这样,我们应该添加什么?

server {
listen      10.0.0.2:443 ssl;
server_name web.mydomain.com;
ssl_certificate      /home/admin/conf/web/ssl.web.mydomain.com.pem;
ssl_certificate_key  /home/admin/conf/web/ssl.web.mydomain.com.key;
error_log  /var/log/apache2/domains/web.mydomain.com.error.log error;

location / {
    proxy_set_header        x-real-IP       Host    $host;
    proxy_set_header        X-Real-IP               $remote_addr;
    proxy_set_header        X-Forwarded-Proto       https;
    proxy_set_header        X-Forwarded-For         $remote_addr;
    proxy_set_header        X-Forwarded-Host        $remote_addr;
    proxy_pass      https://10.0.0.11;
    location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf)$ {
        root           /home/admin/web/web.mydomain.com/public_html;
        access_log     /var/log/apache2/domains/web.mydomain.com.log combined;
        access_log     /var/log/apache2/domains/web.mydomain.com.bytes bytes;
        expires        max;
        try_files      $uri @fallback;
    }
}

location /error/ {
    alias   /home/admin/web/web.mydomain.com/document_errors/;
}

location @fallback {
    proxy_pass      https://10.0.0.11;
}

location ~ /\.ht    {return 404;}
location ~ /\.svn/  {return 404;}
location ~ /\.git/  {return 404;}
location ~ /\.hg/   {return 404;}
location ~ /\.bzr/  {return 404;}

include /home/admin/conf/web/snginx.web.mydomain.com.conf*;

}

您可以使用 IIS 增强型日志记录来编写自定义 headers 类似 X-Forwarded-For 的日志文件,

https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/sites/site/logfile/customfields/add

无法更改源 IP 字段,因为那确实是记录在 TCP/HTTP 数据包中的 IP 地址。

起初我以为这与IIS/NGINX有关,但在@lex-li和@bruce-zhang回复后我进一步研究了它。

我实际上并不知道,但在我们的应用程序中(运行 在 IIS 中)有那些 headers 的侦听器,但这些侦听器没有正确实现。

所以这只是我们的应用程序和 NGINX 之间的错位。

感谢@lex-li 和@bruce-zhang