博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux上Apache反向代理之ProxyPass IIS网站总结
阅读量:4054 次
发布时间:2019-05-25

本文共 2685 字,大约阅读时间需要 8 分钟。

   在把这篇总结写下来之前,我想说几句话: 工作和爱好千万别混在一起,心焦力瘁啊!为了完成一个看似以前很简单并且也有过成功经验的任务,我干到现在。本来以为挺简单的事情,加上那不争气的Promise MB Fasttrak133 的RAID驱动真的让我领略到了Windows服务器平台的魅力:一个字:真TMD烂!服务器安装的时候就有着各种困难,好容易弄好了,却在配置中出现了麻烦,当然不是指简单的对系统和网站的配置,而是针对它的转发配置。
  说正题!
  结构如此:

 

 资料:

  1、Linux1 为主服务器,Win1为本次配置的服务器,Linux2、Linux3为本次顺手配置的服务器;
  2、两个Domain: 、;
  3、防火墙为默认配置;地址:192.168.100.1
  4、外网IP地址:222.222.222.222,内网资源分配:Linux1 : 192.168.100.2、Linux2: 192.168.100.3、Linux3: 192.168.100.4、Win1: 192.168.100.5;
  5、之前所有Domain解析完毕,至222.222.222.222;
  本次重点是 这个Domain在WIN服务器中,使其能够在单一外网IP下通过Linux1的Apache反向代理转发。
  按照道理说,以我以前做的httpd的Proxy或者是Rewrite都是没有问题的,比如:

<VirtualHost 192.168.1.6:80>
ServerAdmin mail@fatsohome
ServerName mail.fatso.cn
ErrorLog logs/mail-error_log
CustomLog logs/mail-access_log common
rewriteengine on
proxyrequests   off
usecanonicalname off
rewriterule ^/(.*)$
[P,L]
</VirtualHost>  
具体内容请参考我以前的文章:

  但是这一次却出现了问题,打电话问师兄,师兄帮我分析了很多情况以后也没能解决,关键是我们以前都是只选择使用Linux服务器,基本用不着Win平台的服务器,所以这一次显然要搞出问题所在。
  在测试和分析中,师兄所讲的使用下面的方式做反向是没问题的:

<VirtualHost>
ServerName  
RewriteEngine On
ProxyPass /
...
</virtualHost>

  但是后来我发现,我们都忽略了一点:我们都处在自己的内网,无论是服务器还是Client都是会先被服务器返回内网的地址运行!这就让我们走入了误区,呵呵。
  当中反复测试了下面的方式,基本上包括了Proxy方式和Rewrite方式:

RewriteRule ^/$

 

RewriteRule ^/(.*) [P,L]

 

RewriteRule ^/(.*) [P,L]

  上面这些都自动专到了Linux1的主Domain: ,于是改用Proxy形式:

ProxyPass /${request_uri}
ProxyPass ^/$

  但是失败告终,页面显示的是403受限访问信息,在无奈之下察看了这个虚拟主机的错误信息,也就是下面这行所表示的内容:

ErrorLog logs/site_b-error_log
CustomLog logs/site_b-access_log common

  发现在Error_log纪录中显示如此内容:

Sat Apr 26   11:08:42 2008   error client 221.1.13.192 client denied by server configuration: proxy:

  这是Proxy设置的问题,可Proxy的设置并没有错误:

<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
     Order deny,allow
     Deny from all
     Allow from .example.com
</Proxy>
</IfModule>

  失望之余突然发现了 Allow From这条规则没有进行过改动……,失败!! 于是更改这条规则:

...
Allow from 192.168.100
...

  再次试验,成功访问,可是却出现了部分内容无法显示,看来Proxy在虚拟主机部分的设置还是有问题的,更改:

ProxyPass /
ProxyPassReverse /

  重新启动Apache,成功~~~ :D 但是如此设置Proxy就会成为全局透明代理了,显然并不符合我们的需要,所以在虚拟主机设置中单独增加了设置条目,详细内容为:

<proxy>
     Order deny,allow
     Allow from 192.168.100
</proxy>

  最后顺手设置了其他两台Linux服务器,并按照此设置类进行,也都成功运行。
  现在给出在这次设置中,改动的文件:

/etc/hosts
增加
的本地设置:
192.168.100.5  
192.168.100.5   b.cn

httpd.conf
启动模块:
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
更改Proxy 设置,如上代码显示;
增加虚拟主机设置:
<VirtualHost 192.168.100.5:80>
ServerAlias b.cn
ServerAdmin mail@fatsohome
ServerName
ErrorLog logs/site_b-error_log
CustomLog logs/site_b-access_log common
RewriteEngine On
<proxy>
     Order deny,allow
     Allow from all
</proxy>
ProxyPass /
ProxyPassReverse /
</VirtualHost>

  参考文献:
  1. Apache 2.0中文手册
  2. Google
  3. 我原来的技术Blog:
  4. 师兄的Blog:
  5. 猪侠山庄Blog:
  6. NetSeek's Blog :

转载地址:http://deoci.baihongyu.com/

你可能感兴趣的文章
No.175 - LeetCode1306
查看>>
No.176 - LeetCode1309
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
mysql:sql alter database修改数据库字符集
查看>>
mysql:sql truncate (清除表数据)
查看>>
yuv to rgb 转换失败呀。天呀。谁来帮帮我呀。
查看>>
yuv420 format
查看>>
yuv420 还原为RGB图像
查看>>
LED恒流驱动芯片
查看>>
驱动TFT要SDRAM做为显示缓存
查看>>
使用file查看可执行文件的平台性,x86 or arm ?
查看>>
qt 创建异形窗体
查看>>
简单Linux C线程池
查看>>
内存池
查看>>
gstreamer相关工具集合
查看>>
RS232 四入四出模块控制代码
查看>>
linux 驱动开发 头文件
查看>>
container_of()传入结构体中的成员,返回该结构体的首地址
查看>>
ipconfig,ifconfig,iwconfig
查看>>
opensuse12.2 PL2303 minicom
查看>>