我使用 centos 6、nginx 作为反向代理、directadmin 和 cloudflare。我按照以下说明获取真实访客 IP:
$ nano /etc/nginx/nginx.conf
将这些添加到 http{
set_real_ip_from 192.168.1.0/24;
set_real_ip_from 192.168.2.1;
set_real_ip_from 2001:0db8::/32;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
重新启动 nginx 没问题,但是当我重新启动 httpd 时出现此错误:
Invalid command 'set_real_ip_from', perhaps misspelled or defined
by a module not included in the server configuration
然后我尝试启用ngx_http_realip_module
。我什么也做不了,但我认为它是默认启用的。
$ nginx -V
结果:
nginx version: nginx/1.8.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/usr
--sbin-path=/usr/s bin --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid
--http-log-p ath=/var/log/nginx/access_log --error-log-path=/var/log/nginx/error_log --with-i pv6 --without-mail_imap_module
--without-mail_smtp_module --with-http_ssl_module --with-http_realip_module --with-http_stub_status_module
--with-http_gzip_stati c_module --with-http_dav_module --with-cc-opt=''-D FD_SETSIZE=32768''
谁能帮我这个?
答案1
看起来这个模块已启用(--with-http_realip_module),但你只是复制了示例配置从模块页面。
set_real_ip 指令应该在后端服务器中设置,而不是在代理服务器中设置。然后你只需要使用一行,应该是:
set_real_ip_from 192.168.2.1;
但将 192.168.2.1 替换为后端服务器正在监听的本地地址。
编辑:因此,为了回答您迄今为止在评论中添加的更多信息,httpd.conf 是 apache (httpd) 的配置文件,nginx 指令在其中不起作用。您应该阅读 apache 文档,以便按您需要的方式进行配置。(rpaf 模块似乎是您要找的模块。这可能对你有用)