转发 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
的日志文件,
无法更改源 IP 字段,因为那确实是记录在 TCP/HTTP 数据包中的 IP 地址。
起初我以为这与IIS/NGINX有关,但在@lex-li和@bruce-zhang回复后我进一步研究了它。
我实际上并不知道,但在我们的应用程序中(运行 在 IIS 中)有那些 headers 的侦听器,但这些侦听器没有正确实现。
所以这只是我们的应用程序和 NGINX 之间的错位。
感谢@lex-li 和@bruce-zhang
我们有一个正常工作的 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
的日志文件,
无法更改源 IP 字段,因为那确实是记录在 TCP/HTTP 数据包中的 IP 地址。
起初我以为这与IIS/NGINX有关,但在@lex-li和@bruce-zhang回复后我进一步研究了它。
我实际上并不知道,但在我们的应用程序中(运行 在 IIS 中)有那些 headers 的侦听器,但这些侦听器没有正确实现。
所以这只是我们的应用程序和 NGINX 之间的错位。
感谢@lex-li 和@bruce-zhang