逐梦论坛's Archiver

shillan 发表于 2015-7-10 23:32

用Apache反向代理设置开放内网服务器

[p=28, 2, left]由于我的服务器在内网,只开放了1个ip的80端口,其它的端口以及内网其它IP的服务器就没机会对外发布。即是想实现访问[url=http://www.xxx.com/a]www.xxx.com/a[/url],就指向了192.168.0.2;访问[url=http://www.xxx.com/b]www.xxx.com/b[/url],就指向了192.168.0.3。192.168.0.2,192.168.0.3分别是内网的两台服务器。[/p][p=28, 2, left] 服务器是windows平台,没有找到很好的办法,就选用了安装Apache作反向代理服务器。前一段时间设置完成后,出现了“/”斜杠问题。就是用http://[url=http://www.xxx.com/a/]www.xxx.com/a/[/url]访问没有问题,但是用http://[url=http://www.xxx.com/a]www.xxx.com/a[/url]访问,地址会变成[url=http://192.168.0.3/]http://192.168.0.3[/url],包括下级目录如果最后没有加/,都会变成内网地址,那外网当然访问不到了,麻烦的是网站中有很多最后没有加/的链接。[/p][p=28, 2, left]   今天看了大半天 Apache中文版参考手册,终于找到了解决的办法,总结一下以便备查参考。[/p][p=28, 2, left]1、下载安装apache:[/p][p=28, 2, left]2.23  [url=http://apache.justdn.org/httpd/binaries/win32/apache_2.2.3-win32-x86-no_ssl.msi]http://apache.justdn.org/httpd/binaries/win32/apache_2.2.3-win32-x86-no_ssl.msi[/url][/p][p=28, 2, left]2.0.59 [url=http://apache.justdn.org/httpd/binaries/win32/apache_2.0.59-win32-x86-no_ssl.msi]http://apache.justdn.org/httpd/binaries/win32/apache_2.0.59-win32-x86-no_ssl.msi[/url][/p][p=28, 2, left]2、配置文件httpd.conf[/p]
[table=95%]
[tr][td]#去掉下面语句的注释,启用Apache的代理模块
[p=28, 2, left]LoadModule proxy_module modules/mod_proxy.so[/p][p=28, 2, left]LoadModule proxy_ajp_module modules/mod_proxy_ajp.so[/p][p=28, 2, left]LoadModule proxy_balancer_module modules/mod_proxy_balancer.so[/p][p=28, 2, left]LoadModule proxy_connect_module modules/mod_proxy_connect.so[/p][p=28, 2, left]LoadModule proxy_http_module modules/mod_proxy_http.so[/p][p=28, 2, left]LoadModule proxy_ftp_module modules/mod_proxy_ftp.so[/p][p=28, 2, left]#去掉上面面语句的注释,启用Apache的代理模块[/p][/td][/tr]
[/table]
[p=28, 2, left]3、在配置文件httpd.conf最后添加          hxxp://www.it99.net/blog/article.asp?id=259[/p]
[table=95%]
[tr][td]<IfModule mod_proxy.c>
[p=28, 2, left]#配置反向代理并不需要打开ProxyRequests指令;ProxyRequests指令是激活正向代理的。[/p][p=28, 2, left]ProxyRequests off[/p][p=28, 2, left]<Proxy *>    [/p][p=28, 2, left]   Order deny,allow[/p][p=28, 2, left]   Allow from all[/p][p=28, 2, left]</Proxy>[/p][p=28, 2, left]ProxyPass /a [url]http://192.168.0.2/[/url][/p][p=28, 2, left]ProxyPassReverse /a [url]http://192.168.0.2/[/url][/p][p=28, 2, left]ProxyPass /b [url]http://192.168.0.2/[/url][/p][p=28, 2, left]ProxyPassReverse /b [url]http://192.168.0.2/[/url][/p][p=28, 2, left]</IfModule>[/p][/td][/tr]
[/table]
[p=28, 2, left]4、参考手册部分摘录[/p]
[table=95%]
[tr][td]
[p=28, 2, left]警告 在您没有对服务器[url=http://doc.chinahtml.com/Manual/ApacheManual/mod/mod_proxy.html#access]采取安全措施[/url]之前,请不要用[/p][p=28, 2, left]ProxyRequests[/p][p=28, 2, left]启用代理。一个开放的代理服务器不仅对您的网络有威胁,对整个因特网来说也同样如此。[/p][p=28, 2, left]Apache可以被配置为正向(forward)和反向(reverse)代理。[/p][p=28, 2, left]正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。[/p][p=28, 2, left]正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性(由[/p][p=28, 2, left][url=http://doc.chinahtml.com/Manual/ApacheManual/mod/mod_cache.html]mod_cache[/url][/p][p=28, 2, left]提供)减少网络使用率。[/p][p=28, 2, left]使用[/p][p=28, 2, left][url=http://doc.chinahtml.com/Manual/ApacheManual/mod/mod_proxy.html#proxyrequests]ProxyRequests[/url][/p][p=28, 2, left]指令即可激活正向代理。因为正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须[url=http://doc.chinahtml.com/Manual/ApacheManual/mod/mod_proxy.html#access]采取安全措施[/url]以确保仅为经过授权的客户端提供服务。[/p][p=28, 2, left]反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。[/p][p=28, 2, left]反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。[/p][p=28, 2, left]可以使用[/p][p=28, 2, left][url=http://doc.chinahtml.com/Manual/ApacheManual/mod/mod_proxy.html#proxypass]ProxyPass[/url][/p][p=28, 2, left]指令激活反向代理(在[/p][p=28, 2, left][url=http://doc.chinahtml.com/Manual/ApacheManual/mod/mod_rewrite.html#rewriterule]RewriteRule[/url][/p][p=28, 2, left]指令中使用[/p][p=28, 2, left][P][/p][p=28, 2, left]标记也可以)。配置反向代理并不需要打开[/p][p=28, 2, left][url=http://doc.chinahtml.com/Manual/ApacheManual/mod/mod_proxy.html#proxyrequests]ProxyRequests[/url][/p][p=28, 2, left]指令。[/p][/td][/tr]
[/table]

[table=95%]
[tr][td][url=http://doc.chinahtml.com/Manual/ApacheManual/mod/mod_cache.html]mod_cache[/url]
[p=28, 2, left]文档。[/p][p=28, 2, left]正向代理[/p]
[p=28, 2, left]ProxyRequests On[/p][p=28, 2, left]ProxyVia On[/p][p=28, 2, left]<Proxy *>[/p][p=28, 2, left]Order deny,allow[/p][p=28, 2, left]Deny from all[/p][p=28, 2, left]Allow from internal.example.com[/p][p=28, 2, left]</Proxy>[/p]
[p=28, 2, left]反向代理[/p]
[p=28, 2, left]ProxyRequests Off[/p][p=28, 2, left]<Proxy *>[/p][p=28, 2, left]Order deny,allow[/p][p=28, 2, left]Allow from all[/p][p=28, 2, left]</Proxy>[/p][p=28, 2, left]ProxyPass /foo [url]http://foo.example.com/bar[/url][/p][p=28, 2, left]ProxyPassReverse /foo [url=http://foo.example.com/bar]http://foo.example.com/bar[/url][/p][/td][/tr]
[/table]

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.