但是常常遇到常用的 myip 網站無法使用或者是在沒有外網的環境下使用,這時候不如就自己架一個 myip 網站
myip 實際上的運用很廣,又非常簡單,只要使用 php + curl 就可以達到 Server / Client 的功能!
MyIP Server 架設
在這邊使用 nginx 當作 WebServer 當範例
Step.1 安裝套件,設定 nginx 允許 php 執行。
$ yum install nginx php php-fpm
$ vim /etc/nginx/conf.d/myip.conf
server {
listen 80;
server_name my.shazi.info;
root /usr/local/nginx/html;
access_log /var/log/nginx/myip_access.log;
error_log /var/log/nginx/myip_error.log;
index index.php index.html index.htm;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-myip.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Step.2 設定 php-fpm
$ vim /etc/php-fpm.d/myip.conf
[php-my]
listen = /var/run/php-fpm/php-myip.socket
listen.allowed_clients = 127.0.0.1
user = nginx
group = nginx
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
$ chown -R nginx.nginx /var/lib/php/session
Step.3 建立 index.php 抓取 client IP
$ vim /usr/share/nginx/html/index.php
<?php
if(!empty($_SERVER['HTTP_CLIENT_IP'])){
$myip = $_SERVER['HTTP_CLIENT_IP'];
}else if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$myip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$myip= $_SERVER['REMOTE_ADDR'];
}
echo $myip;
?>
主要是抓 client header 把任何可能為 client IP 都放進來檢查。
啟動服務並測試
$ service php-fpm start
$ service nginx start
$ curl http://my.shazi.info
192.168.121.99
搞定!
就如同上面 client 端只要 curl 指定網址就可以抓到 IP,你也可以寫成 script
$ vim myip.sh
#!/bin/bash
echo -e "My IP :" & curl http://my.shazi.info
echo ""
$ chmod 755 myip.sh
執行效果
$ ./myip.sh
My IP :
192.168.121.99
Orignal From: 驗證對外 IP 不求人,架設自己的 myip 網站
沒有留言:
張貼留言