黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

WordPress+Nginx+proxy取得真實(shí)IP

系統(tǒng) 3102 0

如果 WordPress 運(yùn)行在 Nginx 作為proxy代理的后端,那么,WP會(huì)默認(rèn)取得$_SERVER['remote_addr']的IP地址.其實(shí)這個(gè)IP地址是前端Nginx的IP地址,是不對(duì)的.如何才能使WordPress取得真實(shí)IP地址呢?方法很簡(jiǎn)單,有幾種,下面說(shuō)下兩種:

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

1.使用HttpRealIpModule模塊:HTTP_X_REAL_IP.
HttpRealIpModule模塊不會(huì)默認(rèn)安裝到Nginx中.您需要配置Nginx,添加--with-http_realip_module選項(xiàng)重新編譯安裝一次Nginx.

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

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

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

echo $_SERVER['HTTP_X_REAL_IP'];

就會(huì)得到用戶的真實(shí)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前端,也就是服務(wù)器A添加:
proxy_set_header X-Forwarded-For $remote_addr;

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

這時(shí)候,客戶真實(shí)IP則會(huì)保存在$_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];
}

保存退出,完成!

現(xiàn)在試在WP中添加一個(gè)新評(píng)論,看下是不是使用了真實(shí)IP了?

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

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

<?php

print_r($_SERVER);

?>

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

圖中,
REMOTE_ADDR是前端代理Nginx,也就是服務(wù)器A的IP地址.
HTTP_X_REAL_IP就是用戶的真實(shí)IP地址,這個(gè)是有用的.
HTTP_X_FORWARDED_FOR也是用戶的真實(shí)IP地址,這個(gè)是有用的.真如果經(jīng)過(guò)很多次跳轉(zhuǎn)的話,這里將會(huì)得到一串以","分隔的IP地址列表.

相關(guān)閱讀:

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

Stackflow回復(fù):

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配置: 轉(zhuǎn)自 張宴
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;
}
}
此時(shí)獲取客戶端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取得真實(shí)IP


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論