仅限nginx反向代理的Apache后端访问?

我有nginx设置为一组apache(LAMP)后端监听端口8080的反向代理

我还configuration了每个后端服务器的mod_rpaf.conf文件,以包含nginx服务器的代理IP:

 <IfModule mod_rpaf.c> RPAF_Enable On RPAF_ProxyIPs 127.0.0.1 192.168.0.1 # <- nginx server IP RPAF_Header X-Forwarded-For RPAF_SetHostName On RPAF_SetHTTPS On RPAF_SetPort On </IfModule> 

我怎样才能configurationhttpd.conf拒绝任何不是来自nginx的连接?

我已经尝试了以下内容:

 <Directory "/var/www/html"> Order allow,deny Allow from 192.168.0.1 Allow from 127 Deny from all </Directory> 

但是这似乎限制了对nginx代理本身以及任何其他IP的访问。

这是由于mod_rpaf转发客户端IP吗? 如果是的话,我该如何得到这个?

由于mod_rpaf模块转发真实的客户端IP,因此您不能通过自己的httpd.conf文件阻止对apache后端服务器的公共访问。

设置几个IPtables规则将阻止除nginx反向代理以外的任何人(公共访问)访问端口8080,而不会影响客户端真实IP的转发:

跑:

 #iptables -A INPUT -p tcp --dport 8080 -s 192.168.0.1 -j ACCEPT #iptables -A INPUT -p tcp --dport 8080 -j DROP #service iptables save #service iptables restart 

现在,只能通过端口8080访问apache后端服务器。

我想你应该改变你的允许/ deny_statements这样的顺序:

 <Directory "/var/www/html"> Order deny,allow Deny from all Allow from 192.168.0.1 Allow from 127 </Directory> 

因为( 订单文档 )

  • 订购是以下之一:

    允许,拒绝 – 首先,所有允许指令都被评估; 至less一个必须匹配,否则请求被拒绝。 接下来,所有Deny指令都被评估。 如果有任何匹配,请求被拒绝。 最后,默认情况下,拒绝任何不符合Allow或Deny指令的请求。

    拒绝,允许 – 首先,评估所有拒绝指令; 如果匹配,请求将被拒绝,除非它也匹配Allow指令。 任何不符合任何允许或拒绝指令的请求都是允许的。

从文档中例证 :

使用Order可以让你确定你实际上是通过组合一个Deny和一个Allow指令来限制你想要进入的组:

 Order deny,allow Deny from all Allow from dev.example.com