标签 Nginx 下的文章

PHP 获取真实用户 IP 地址

PHP 获取用户(客户端)真实 IP(IPv4)

1.当使用了 CDN负载均衡 ...后,导致使用 $_SERVER['REMOTE_ADDR'] 获取不到用户的真实 IP

2. 当用户使用了“匿名代理”,$_SERVER['REMOTE_ADDR'] 将显示代理服务器的IP

因为业务的需要,我们就需要获取用户的真实 IP 进行业务上的操作

<?php
//获取用户真实IP
function getIp() {
    if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
        $ip = getenv("HTTP_CLIENT_IP");
    else
        if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
            $ip = getenv("HTTP_X_FORWARDED_FOR");
        else
            if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
                $ip = getenv("REMOTE_ADDR");
            else
                if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
                    $ip = $_SERVER['REMOTE_ADDR'];
                else
                    $ip = "unknown";
    return ($ip);
}

echo getIp();//输出真实 IP

Web压力测试工具ApacheBench(ab)独立安装及使用方法

ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。 ab命令对发出负载的计算机要求很低,既不会占用很高CPU,也不会占用很多内存,但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也须注意,否则一次上太多的负载,可能造成目标服务器因资源耗完,严重时甚至导致死机。

ApacheBench命令原理:

ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。

ab命令对发出负载的计算机要求很低,既不会占用很高CPU,也不会占用很多内存,但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也须注意,否则一次上太多的负载,可能造成目标服务器因资源耗完,严重时甚至导致死机。

- 阅读剩余部分 -

宝塔(BT)面板-Nginx如何开启PHP报错

使用宝塔(BT)面板搭建的 LNMP 环境(L:Linux,N:Nginx,M:MySQL,P:PHP),本地测试代码时,没有发现什么问题,但是,放到服务器上时就出现 500 错误了,没有任何错误提示,查看日志,也只能看到 500,很是纳闷,然后Goole查了些资料,在这里做一个笔记。

- 阅读剩余部分 -