Nginx反向代理,并且apache或nginx获取客户端真实IP

Nginx反向代理配置信息

#PROXY-START/
location /
{
    proxy_pass http://192.168.139.129;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    
    add_header X-Cache $upstream_cache_status;
    
    #Set Nginx Cache
    
        add_header Cache-Control no-cache;
    expires 12h;
}

#PROXY-END/

apache获取真实IP配置信息

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    DocumentRoot "/www/wwwroot/ceshidaili/public"
    ServerName 6bcadd09.ceshidaili.local
    ServerAlias ceshidaili.local
    #errorDocument 404 /404.html
    ErrorLog "/www/wwwlogs/ceshidaili.local-error_log"
    CustomLog "/www/wwwlogs/ceshidaili.local-access_log" combined
    
    #DENY FILES
     <Files ~ (\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)$>
       Order allow,deny
       Deny from all
    </Files>
    
    #PHP
    <FilesMatch \.php$>
            SetHandler "proxy:unix:/tmp/php-cgi-73.sock|fcgi://localhost"
    </FilesMatch>
    
    #PATH
    <Directory "/www/wwwroot/ceshidaili/public">
        SetOutputFilter DEFLATE
        Options FollowSymLinks
        Require all granted
        DirectoryIndex index.php index.html index.htm default.php default.html default.htm
        AllowOverride all
    </Directory>
    <IfModule remoteip_module>
      RemoteIPHeader X-Forwarded-For
      RemoteIPInternalProxy 192.168.139.128/24
    </IfModule>
</VirtualHost>

Nginx获取真实IP配置信息

real_ip_header X-Forwarded-For;

set_real_ip_from 192.168.139.128/24;

补充:

一层代理可以用X-Forwarded-For或者X-Real-IP

多次代理建议用X-Real-IP

X-Forwarded-For是用于记录代理信息的,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP追加在X-Forwarded-For

X-Real-IP,一般只记录真实发出请求的客户端IP

请求头信息丢失可能问题:

方法一:NGINX代理时加上请求头信息:

location /
{
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://192.168.18.72/mkh5;
}
由于前端代码request的header中包含_,所以这个配置没有生效

方法二:

从根本解除nginx的限制,nginx默认request的header的那么中包含’_’时,会自动忽略掉。

http部分中添加如下配置:underscores_in_headers on; (默认 underscores_in_headers 为off)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梅坞茶坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值