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

WordPress+Nginx+proxy取得真實IP

系統 2911 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條評論
主站蜘蛛池模板: 亚洲国产欧美一区二区欧美 | 日韩经典欧美精品一区 | 日本成本人在线观看免费视频 | 久久网欧美 | 欧美日韩成人在线观看 | 日本视频不卡 | 久久精品国产线看观看亚洲 | 亚洲欧美动漫 | 免费看一毛一级毛片视频 | 日本在线观看一级高清片 | 在线视频 中文字幕 | 久久伊人一区二区三区四区 | 久久天天躁狠狠躁狠狠躁 | 久久精品国产亚洲综合色 | 国产小网站 | 国产一级特黄生活片 | 香蕉碰碰人人a久久动漫精品 | 国产精品视频一区二区三区经 | 久久久久亚洲视频 | 一级免费毛片 | 国产一级黄色录像 | 毛片网站在线 | 国产福利一区视频 | 日韩高清中文字幕 | 91在线视频在线 | 欧美成人精品在线 | 全部免费的毛片在线看美国 | 欧美成人一区二区三区不卡 | 欧美日韩成人在线视频 | 99热最新网站地址获取 | 黄色片网站在线免费观看 | 精品一区二区三区在线视频 | 日本免费一区视频 | 手机看片国产福利 | 欧美久久久久久久久 | 综合网五月 | 精品视频在线视频 | 国产精品国产三级国产普通话 | 精品一级毛片 | 欧美午夜性春猛交 | 中国女人69xxxxx |