亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

WordPress+Nginx+proxy取得真實IP

系統 2517 0

如果 WordPress 運行在 Nginx 作為proxy代理的后端,那么,WP會默認取得$_SERVER['remote_addr']的IP地址.其實這個IP地址是前端Nginx的IP地址,是不對的.如何才能使WordPress取得真實IP地址呢?方法很簡單,有幾種,下面說下兩種:

首先,我們定義一下,假設運行Nginx Proxy的,為服務器A,而運行WordPress的,為服務器B(可以是Nginx, Apache ,Lighttpd,IIS等).

1.使用HttpRealIpModule模塊:HTTP_X_REAL_IP.
HttpRealIpModule模塊不會默認安裝到Nginx中.您需要配置Nginx,添加--with-http_realip_module選項重新編譯安裝一次Nginx.

然后在Nginx Proxy前端添加:
proxy_set_header X-Real-IP $remote_addr;

重新加載Nginx的配置:
/usr/local/nginx/sbin/nginx -s reload

這時候,客戶真實IP會保存在$_SERVER['HTTP_X_REAL_IP']變量中,如果使用 php 程序,輸出:

echo $_SERVER['HTTP_X_REAL_IP'];

就會得到用戶的真實IP了.

修改WordPress根目錄下的wp-config.php:
在第二行添加:
if (isset($_SERVER['HTTP_X_REAL_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
}

保存退出,完成!

2.使用HTTP_X_FORWARDED_FOR變量

不用安裝其它模塊.

然后在Nginx Proxy前端,也就是服務器A添加:
proxy_set_header X-Forwarded-For $remote_addr;

重新加載Nginx的配置:
/usr/local/nginx/sbin/nginx -s reload

這時候,客戶真實IP則會保存在$_SERVER['HTTP_X_FORWARDED_FOR']變量中,

修改WordPress根目錄下的wp-config.php:
在第二行添加:

if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $ips[0];
}

保存退出,完成!

現在試在WP中添加一個新評論,看下是不是使用了真實IP了?

不但在WordPress可以使用這種方法,舉一反三,這種方法可以使用到其它相似的環境中.

如果在php程序中這樣輸出:

<?php

print_r($_SERVER);

?>

將會得到一些類似的信息,如下圖:

圖中,
REMOTE_ADDR是前端代理Nginx,也就是服務器A的IP地址.
HTTP_X_REAL_IP就是用戶的真實IP地址,這個是有用的.
HTTP_X_FORWARDED_FOR也是用戶的真實IP地址,這個是有用的.真如果經過很多次跳轉的話,這里將會得到一串以","分隔的IP地址列表.

相關閱讀:

  1. Nginx+Memcached高速優化DedeCMS之程序修改
  2. Nginx-JSP-Tomcat-PHP
  3. Nginx整合Tomcat
  4. Nginx服務管理腳本
  5. WordPress 自動關鍵字(詞)外鏈BlogMechanics KeywordLink,SEO優化好插件

Stackflow回復:

Whatever you do, make sure not to trust data sent from the client. $_SERVER['REMOTE_ADDR'] contains the real IP address of the connecting party. That is the most reliable value you can find.

However, they can be behind a proxy server in which case the proxy may have set the $_SERVER['HTTP_X_FORWARDED_FOR'] , but this value is easily spoofed. For example, it can be set by someone without a proxy, or the IP can be an internal IP from the LAN behind the proxy.

This means that if you are going to save the $_SERVER['HTTP_X_FORWARDED_FOR'] , make sure you also save the $_SERVER['REMOTE_ADDR'] value. E.g. by saving both values in different fields in your database.


基本的Nginx配置: 轉自 張宴
user www www;

worker_processes 10;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

#最大文件描述符
worker_rlimit_nofile 51200;

events
{
use epoll;

worker_connections 51200;
}

http
{
include conf/mime.types;
default_type application/octet-stream;

keepalive_timeout 120;

tcp_nodelay on;

upstream www.s135.com {
server 192.168.1.2:80;
server 192.168.1.3:80;
server 192.168.1.4:80;
server 192.168.1.5:80;
}

upstream blog.s135.com {
server 192.168.1.7:8080;
server 192.168.1.7:8081;
server 192.168.1.7:8082;
}

server
{
listen 80;
server_name www.s135.com;

location / {
proxy_pass http://www.s135.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

log_format www_s135_com '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /data1/logs/www.log www_s135_com;
}

server
{
listen 80;
server_name blog.s135.com;

location / {
proxy_pass http://blog.s135.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

log_format blog_s135_com '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /data1/logs/blog.log blog_s135_com;
}
}
此時獲取客戶端IP方法如下:
function getIP() {
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
} else if( isset($_SERVER['HTTP_X_REAL_IP']) ) {
return $_SERVER['HTTP_X_REAL_IP']);
}else if(isset($_SERVER['REMOTE_ADDR'])) {
return$_SERVER[' REMOTE_ADDR ']);
} else {
return '';
}
}

WordPress+Nginx+proxy取得真實IP


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一级毛片真人不卡免费播 | 国产精品亚欧美一区二区三区 | 亚洲精品久久久久久久福利 | 一区二区三区高清不卡 | 色久优优 欧美色久优优 | 欧美一区永久视频免费观看 | 日日摸夜夜添夜夜添人人爽 | 奇米色在线视频 | 国产欧美另类久久久品 | 国产精品成人一区二区 | 天天干天天操天天做 | 四虎永久免费网站 | 欧美美女xnxx | 国产自精品在线 | 国内精品久久久久久久97牛牛 | 国产亚洲精品中文带字幕21页 | 中文字幕永久视频 | 免费一级毛片免费播放 | 青青青国产深夜福利视频 | 天天狠操| 高清国产精品久久久久 | 99久热在线精品视频观看 | snh48欧洲大片在线观看 | 亚洲综合伊人 | www午夜视频| 久久日本精品国产精品白 | 国产瑟瑟| 日本美女视频韩国视频网站免费 | 亚洲福利视频一区二区三区 | 国产日韩中文字幕 | 99热精品国产三级在线观看 | 草草第一页 | 9久热这里只有精品视频在线观看 | 九九九九热精品视频 | 99精品国产成人一区二区 | 一级毛片视频播放 | 四虎永久影院 | 美女黄频网站 | 欧美日韩在线成人免费 | 午夜精品久久久久久久90蜜桃 | 99视频免费播放 |