我想要达到像 ip.me 一样,通过 curl ip.me 访问会返回 IP
网站 nginx 配置了 http 到 https 的 301 跳转
现在,通过 curl -L 域名 或 curl https://域名 访问可以正常返回 IP
但是由于 nginx 的 301 跳转,curl 域名 没有任何信息返回
要如何才能让 curl 域名 正常返回 IP 呢?
curl 返回 IP 的代码如下:
<?php
function getIp(){
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_X_REAL_IP'])) {
$ip = $_SERVER['HTTP_X_REAL_IP'];
} elseif (isset($_SERVER['HTTP_X_IP'])) {
$ip = $_SERVER['HTTP_X_IP'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
//当使用 cURL 访问时,返回访问者 IP 地址
if(!empty($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'curl') !== false){
$ip = getIp();
$ip = urldecode($ip);
// 在输出前去掉空格,mac 终端下有的 IP 地址后面有空格
$ip = trim($ip);
// 输出后换行,linux 下避免换行不正确的问题
echo $ip . "\n";
exit;
}
?>
感谢解答
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.