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

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條評論
主站蜘蛛池模板: 日本特黄特色aaa大片免费欧 | 四虎在线视频 | 午夜国产福利在线观看 | 国产精品久久久久一区二区三区 | 国产精品美女免费视频大全 | 黄页在线播放网址 | 久久这里只有精品免费视频 | 中文字幕久热 | 99精品国产自产在线观看 | 波多野结衣绝顶大高潮 | 久久亚洲欧美成人精品 | 日本不卡高清 | 免费香蕉一区二区在线观看 | 日本免费高清一区 | 亚欧人成精品免费观看 | 亚洲影院中文字幕 | 国产高清在线精品二区一 | 波多野结衣亚洲一区二区三区 | 亚洲精品视频久久久 | 国产三及 | 亚洲狠狠婷婷综合久久久久网站 | 99精品国产第一福利网站 | 国产免费变态视频网址网站 | 久久精品国产第一区二区 | 婷婷婷色 | 亚洲精品综合久久中文字幕 | 羞羞视频在线观看视频 | 国产色婷婷精品综合在线观看 | 久草性视频 | 高清黄色毛片 | 爱爱视频天天看 | 黄色免费在线观看 | 毛片免费高清免费 | 亚洲国产日韩欧美mv | 99精品在线播放 | 国产日韩高清一区二区三区 | 亚洲无吗在线视频 | 国产一区二区在线视频观看 | 中国毛片免费看 | 国产69精品久久久久777 | 成年女人视频播放免费观看 |