全球主机交流论坛备用站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

请教一个nginx反代配置问题

发布者: cnn | 发布时间: 2019-3-21 23:40| 查看数: 2526| 评论数: 4|帖子模式

先贴个我的配置:
```

  • server
  • {
  • listen 8 ssl http2;
  • server_name domain.com;
  • ssl_certificate /etc/default/fullchain.cer;
  • ssl_certificate_key /etc/default/domain.com.key;


  • error_page 497 https://$host:8$request_uri;
  • location / {
  • proxy_redirect off;
  • proxy_set_header Host $http_host;
  • proxy_set_header X-Real-IP $remote_addr;
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  • proxy_set_header X-Scheme $scheme;
  • proxy_pass https://192.168.2.5:5001;
  • }}

复制代码

```
IP 和端口的情况:
客户端( 192.168.2.2 )→Nginx ( domain.com:8 )→服务器后端( https://192.168.2.5:5001 )

我想实现这样的配置,通俗来说就是当「客户端」输入:「 https://domain.com:8 」访问的时候,服务器后端接受到的信息是:「客户端」的 IP 是「 192.168.2.2 」是通过访问「 https://192.168.2.5:5001 」来访问服务器后端的,也就是说当 Nginx 完全不存在一样,这样的话应该怎么样配置呢?
谢谢!

最新评论

ddsdjn 发表于 2019-3-21 23:44:58
本帖最后由 yaren 于 2019-3-21 23:43 编辑

#这样配置可以通过x-forwarded-for获取用户真实ip
proxy_set_header X-Real-IP $remote_addr;


你不是配了吗
spell 发表于 2019-3-21 23:58:45
yaren 发表于 2019-3-21 23:42
#这样配置可以通过x-forwarded-for获取用户真实ip
proxy_set_header X-Real-IP $remote_addr;


真实IP服务端能获取,我想要服务端判断客户端是访问的「https://192.168.2.5:5001」,而不是通过nginx代理访问的「https://domain.com:8」
boomy 发表于 2019-3-22 00:02:24
toyst 发表于 2019-3-21 23:48
真实IP服务端能获取,我想要服务端判断客户端是访问的「https://192.168.2.5:5001」,而不是通过nginx代 ...


不能,
最后的服务端是看到的客户端ip是根据与自己建立 tcp 连接的 ip 确定的,
除非他自己设定读取 http header 的某一字段为客户端ip,
走走 发表于 2019-3-22 00:10:24
本帖最后由 爱纯粹 于 2019-3-22 00:07 编辑

https://www.nginx.com/blog/ip-transparency-direct-server-return-nginx-plus-transparent-proxy/
里面的 IP Transparency 就是你要的功能,但是只有收费版有。
所以还是老实改后端用HTTP头传客户端IP吧
展开

QQ|Archiver|手机版|小黑屋|全球主机交流论坛备用站

GMT+8, 2024-4-26 05:08 , Processed in 0.040182 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表