服务器 IP 被检测为用户 IP

服务器 IP 被检测为用户 IP

我的服务器 IP 是***.***.***.234。对于 SSL,我需要添加另一个 IP ***.***.***.235。这是一个 vps,IP 地址是由朋友添加的。

问题是:当有人提交评论(WordPress)时,用户 IP 被检测为***.***.***.235,这是服务器 IP,而不是用户 IP,这确实是一个问题。如何解决这个问题?

VPS 在 Cent OS 和 Nginx 上运行。

更新:VHOST 条目

server {
     error_log /var/log/nginx/vhost-error_log warn;
     listen ***.***.***.235:80;
     server_name example.com www.example.com;
     access_log /usr/local/apache/domlogs/example.com-bytes_log bytes_log;
     access_log /usr/local/apache/domlogs/example.com combined;
     root /home/tareq/public_html;

     location / {
          location ~.*\.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|html|htm|txt|js|css|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso)$ {
               expires 1d;
               try_files $uri @backend;
          }

          error_page 405 = @backend;
          add_header X-Cache "HIT from Backend";
          proxy_pass http://***.***.***.235:8081;
          include proxy.inc;
     }

     location @backend {
          internal;
          proxy_pass http://***.***.***.235:8081;
          include proxy.inc;
     }

     location ~ .*\.(php|jsp|cgi|pl|py)?$ {
          proxy_pass http://***.***.***.235:8081;
          include proxy.inc;
     }

     location ~ /\.ht {
          deny all;
     }
}

答案1

听起来 nginx 未配置为将客户端地址传递给 Apache。
您需要更改 nginx 配置文件以包含以下内容:

server{
    location / {
        proxy_pass http://127.0.0.1:PORT;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

最后一步是安装 Apache 的 mod_rpaf。此模块允许您在使用代理时设置远程地址的值。如果您尚未安装该模块(尝试“a2enmod rpaf”来查找),您可以通过 apt-get 安装它:

sudo apt-get install libapache2-mod-rpaf

尽管您现在可能正在检索正确的 IP 地址,但您需要确保模块配置正确。我的 Apache 配置文件在所有其他的下面都有以下代码:

# The following lines allow client IP to be passed from Nginx to Apache
<IfModule mod_rpaf.c>
    RPAFenable On
    RPAFsethostname On
    RPAFproxy_ips 127.0.0.1
</IfModule>

相关内容