gpt4 book ai didi

nginx - 使用nginx时在dotnet核心中获取真实的客户端IP地址

转载 作者:行者123 更新时间:2023-12-04 21:07:51 24 4
gpt4 key购买 nike

我正在使用 dotnet 核心。我正在使用 Request.HttpContext.Connection.RemoteIpAddress.ToString() 行获取 IP 地址.当我使用我的 ip 地址访问我的网站时,我看到客户端 ip 地址显示正确。但是我想使用 https 而我使用 nginx。所以在我的位置我写了

    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;

当我通过域访问我的网站时,我的 IP 地址显示为 ::1127.0.0.1 (他们每次刷新时都会切换)。我的 nginx 配置在下面我不确定如何告诉 .net core 真正的 IP 地址
server {
server_name www.example.com;
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
root /var/www/example.com/;
add_header Strict-Transport-Security "max-age=31536000";
index index.html index.htm;
log_not_found off;
access_log off;
#try_files $uri.html $uri $uri/ =404;
expires max;
default_type text/plain;
include /etc/nginx/mime.types;

index off;
location ~/other/ {
index off;
autoindex on;
}

location /abc {
proxy_pass http://localhost:5050;
proxy_http_version 1.1;
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_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

最佳答案

默认情况下不处理转发的 header 。您需要使用 HttpOverrides 中间件。

  • 添加 Microsoft.AspNetCore.HttpOverrides作为依赖
  • 将以下内容添加到您的 Configure方法:
    app.UseForwardedHeaders(new ForwardedHeadersOptions
    {
    ForwardedHeaders = ForwardedHeaders.XForwardedFor |
    ForwardedHeaders.XForwardedProto
    });
  • 关于nginx - 使用nginx时在dotnet核心中获取真实的客户端IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41446148/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com