我一直在寻找一段时间,但我无法找到适合我案例的解决方案。 所以这是我的情况:
我在我公司安装了一台服务器,我有一台应用程序和一台用作代理的apache服务器。 该服务器可以访问网络上安装的一些设备(专用网络)。这些设备有一个嵌入式网络服务器,我们可以从中配置设备(如家用路由器)。 所以,我想要的是能够代理所有传入的设备请求。 我想要处理的方式是这样的:
用户可以使用该查询:
http://SERVER_IP:9090/10.219.1.1/
所以IP:10.219.1.1实际上是我想要访问的设备的IP。
到目前为止,这就是我所做的:
SetEnvIf Referer ".*(10\.219\.[0-9]{1,3}\.[0-9]{1,3}).*$" routeur_ip=$1
SetEnvIf Request_URI ".*(10\.219\.[0-9]{1,3}\.[0-9]{1,3}).*$" routeur_ip=$1
RewriteRule ^\/10\.219\.[0-9]{1,3}\.[0-9]{1,3}\/$ http://%{ENV:routeur_ip}/ [P,L]
RewriteRule ^\/10\.219\.[0-9]{1,3}\.[0-9]{1,3}\/(.*)$ http://%{ENV:routeur_ip}/$1 [P,L]
RewriteRule ^\/(themes.*)$ http://%{ENV:routeur_ip}/$1?david=%{ENV:routeur_ip} [P,L]
RewriteRule ^\/(images.*)$ http://%{ENV:routeur_ip}/$1 [P,L]
RewriteRule ^\/(css.*)$ http://%{ENV:routeur_ip}/$1 [P,L]
RewriteRule ^\/(cgi-bin.*)$ http://%{ENV:routeur_ip}/$1 [P,L]
RewriteRule ^\/(js.*)$ http://%{ENV:routeur_ip}/$1 [P,L]
RewriteRule ^\/(favicon.ico)$ http://%{ENV:routeur_ip}/$1 [P,L]
ProxyPassReverse http://SERVER_IP:9090/%{ENV:routeur_ip}/ http://%{ENV:routeur_ip}/
结果: 我可以加载HTML代码,但有两件事不起作用。
<a href="/cgi-bin/webif/status-network.sh?cat=Network">Network</a>
http://10.23.130.107:9090/cgi-bin/webif/status-network.sh?cat=Network
因此返回URL不包括设备的IP地址...... 记录:
GET MY_IP 200, /10.219.1.1/ | Req_URI:/10.219.1.1/, HTTP_REF: | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /10.219.1.1/cgi-bin/webif/system-info.sh | Req_URI:/10.219.1.1/cgi-bin/webif/system-info.sh, HTTP_REF: | ip = 10.219.1.1 vs - |-|-
GET MY_IP 401, /10.219.1.1/cgi-bin/webif/system-info.sh | Req_URI:/10.219.1.1/cgi-bin/webif/system-info.sh, HTTP_REF: | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /themes/active/waitbox.css | Req_URI:/themes/active/waitbox.css, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /themes/active/webif.css | Req_URI:/themes/active/webif.css, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /js/styleswitcher.js | Req_URI:/js/styleswitcher.js, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /images/ajax-loader.gif | Req_URI:/images/ajax-loader.gif, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /images/hlogo.gif | Req_URI:/images/hlogo.gif, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /images/cell7.gif | Req_URI:/images/cell7.gif, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /images/cell7.gif | Req_URI:/images/cell7.gif, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 200, /10.219.1.1/cgi-bin/webif/system-info.sh | Req_URI:/10.219.1.1/cgi-bin/webif/system-info.sh, HTTP_REF: | ip = 10.219.1.1 vs - |-|-
GET MY_IP 200, /js/styleswitcher.js | Req_URI:/js/styleswitcher.js, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 200, /themes/active/waitbox.css | Req_URI:/themes/active/waitbox.css, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 200, /themes/active/webif.css | Req_URI:/themes/active/webif.css, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 400, /themes/vip4g/menu-bg.gif | Req_URI:/themes/vip4g/menu-bg.gif, HTTP_REF:http://SERVER_IP:9090/themes/active/webif.css | ip = - vs - |-|-
GET MY_IP 400, /themes/vip4g/current-bg.gif | Req_URI:/themes/vip4g/current-bg.gif, HTTP_REF:http://SERVER_IP:9090/themes/active/webif.css | ip = - vs - |-|-
GET MY_IP 200, /images/ajax-loader.gif | Req_URI:/images/ajax-loader.gif, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 200, /images/hlogo.gif | Req_URI:/images/hlogo.gif, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 200, /10.219.1.1/cgi-bin/webif/system-info.sh | Req_URI:/10.219.1.1/cgi-bin/webif/system-info.sh, HTTP_REF: | ip = 10.219.1.1 vs - |-|-
GET MY_IP 200, /images/cell7.gif | Req_URI:/images/cell7.gif, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
我有另一个解决方案,但我不喜欢它。我可以为每个设备IP创建一个本地端口Fowarding(带有ip表),但是服务器上需要很多端口才能这样做,我不认为这是正确的方法。
任何提示的Thx。
此致
答案 0 :(得分:0)
您想要的是一件复杂的事情。您希望更改对主机的所有引用,以在URL上添加IP前缀。
代理指令,默认情况下,只管理HTTP标头内容(如302等)。这就是你已经拥有的。
使用正确的网址重写HTML / JS / CSS内容:
X-Forwarded-Port
,X-Forwarded-Proto
和X-Forwarded-Host
)。知道这些是值列表,第一个是应该在HTML / CSS / Js内容中使用的值。引用维基百科这是这些列表的一般形式:X-Forwarded-For:client,proxy1,proxy2
第二种解决方案意味着您必须对应用程序有深入的了解和力量,并且通常会使用代理上的内容重写器。
另一种行动方式可能是提取其他内容的IP前缀,引用者标题或cookie值。无论如何,您的配置肯定需要一些安全性反射,您允许最终使用您的代理对他选择的IP地址进行查询。