banner
libxcnya.so

libxcnya.so

Nothing...
telegram
twitter
github
email

Get the real IP of visitors after using CDN in Typecho.

Preface#

CDN can accelerate websites and protect the IP of the source server. However, when CDN is enabled in Typecho, the IP of users in the backend comment area is displayed as the IP of the CDN. So how can we obtain the real IP address of the users?

Tutorial#

First, open [this][1]
Get your own IP address, for example, 2001:470:c:573::2333

Create a new PHP file and enter the following content

<?php
print_r($_SERVER);
?>

Then access it through a browser and get the following content

*Array
(
[USER] => www
[HOME] => /home/www
[HTTP_CDN_LOOP] => cloudflare
[HTTP_CF_CONNECTING_IP] => 2001:470:c:573::2333
[HTTP_COOKIE] => __cfduid=1a1d45v141f9n19s810b
[HTTP_ACCEPT_LANGUAGE] => zh-CN,zh;q=0.9
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/awebp,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
[HTTP_UPGRADE_INSECURE_REQUESTS] => 1
[HTTP_CF_VISITOR] => {"scheme":"https"}
[HTTP_X_FORWARDED_PROTO] => https
[HTTP_CF_RAY] => 5656aff39c0ceb95-LAX
[HTTP_X_FORWARDED_FOR] => 2001:470:c:573::2333
[HTTP_CF_IPCOUNTRY] => US
[HTTP_ACCEPT_ENCODING] => gzip
[HTTP_CONNECTION] => Keep-Alive
[HTTP_HOST] => blog.xcnya.cn
[PATH_INFO] => 114514
[REDIRECT_STATUS] => 200
[SERVER_NAME] => blog.xcnya.cn
[SERVER_PORT] => 443
[SERVER_ADDR] => 2606:4700:3036::2333:2333
[REMOTE_PORT] => 11451
[REMOTE_ADDR] => 2606:4700:3036::2333:2333
[SERVER_SOFTWARE] => cloudflare
[GATEWAY_INTERFACE] => CGI/1.1
[REQUEST_SCHEME] => https
[SERVER_PROTOCOL] => HTTP/1.1
[DOCUMENT_ROOT] => /www/wwwroot/blog.xcnya.cn
[DOCUMENT_URI] => /114514.php
[REQUEST_URI] => /114514.php
[SCRIPT_NAME] => /114514.php
[CONTENT_LENGTH] =>
[CONTENT_TYPE] =>
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[SCRIPT_FILENAME] => /www/wwwroot/blog.xcnya.cn
[FCGI_ROLE] => RESPONDER
[PHP_SELF] => /114514.php
[REQUEST_TIME_FLOAT] => 1656230855.1145
[REQUEST_TIME] => 1656230855
)*

Press Ctrl+F and search for your IP address 2001:470:c:573::2333

The corresponding item is
HTTP_CF_CONNECTING_IP

Get it using PHP

<?php
$ipaddr=$_SERVER['HTTP_CF_CONNECTING_IP'];
echo $ipaddr
?>

Then you can get the real user IP address

So how to apply it to Typecho
Find config.inc.php in the root directory of the website
Add the following content at the end of the file, leaving a few empty lines

define('__TYPECHO_IP_SOURCE__', 'CF_CONNECTING_IP');  //Remove HTTP_

After saving, open the website
Leave a comment in the comment area
You will find that the displayed IP is the real user IP, not the CDN IP

This operation will not change the IP of existing users in the comment area. The CDN IP displayed by existing users in the database will not change after the operation:::

This article is synchronized and updated to xLog by Mix Space
The original link is https://blog.nekorua.com/posts/maintain/14.html


Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.