首页 > 日常 > Ubuntu系统Apache反向代理设置

Ubuntu系统Apache反向代理设置

先说一点题外话,糗事的android、windows phone 7、iOS 版本都有一点点眉目了,android  的版本都开始进行第二版了,但是网站一直都没有动静。

网站部分我是打算分为2块,一块是给mobile html5的那部分,给那些 java 和 诺基亚 Sysmain 的用户访问的;另外一部分是传统网页,打算用 javascript 和 php 好好地写一下,然后看看能不能找一个前端方面的职位。

在这里,要非常地感谢一个人,就是我的好朋友ququ同学,他给与我太多太多的帮助,事无巨细,我为有这样的一个好朋友而骄傲。

本来空间是在国外的,平时都是自己在用,糗事的web版本我担心大家使用速度可能会有点慢,可是用国内的话备案就简直是一个杯具,要现场照相不说,还有个人信息泄漏的风险。衣服自己洗就曾经踩了一个坑,现在简直是非常地排斥备案,于是最终就用的新浪的SAE空间。

网上看了很多教程,说的是打开apache 的重写功能,虽然看的头晕晕的,半按照网上的方法修改半自己揣摩着,期间还给ququ连发了2封邮件呢。下班时最后的效果就是访问网站的时候,虽然会显示期望的内容,但是地址栏的url会变化,还是会显示真实的地址,我用工具查看了下,确实会有 http 304 请求。

这不是我想要的。在吃过晚饭后,觉得这样也不是办法,ququ还木有回邮件,于是就自己琢磨呗,网上又看了一些帖子,最终整理如下。

第一步,首先是要打开apache的相关功能。

sudo a2enmod rewrite 打开 url 重写,虽然反向代理用不上,但是程序的其它地方是需要的,这里就一并给打开了。
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer

这里一共有3个命令,我开始的时候按照网上的教程只打开了第一个,后面的2个没有打开,总是报服务器500 内部错误,后来添加了后面的2个后就解决了。如果你在配置的时候,日志里提示“proxy: No protocol handler was valid for the URL /. If you are using a DSO version of mod_proxy, make sure the proxy sub”,那么你应该和我一样,添加后面的2个功能。

第二步,设置网站的配置文件,在ubuntu的apache里,每个网站的配置文件是放在单独的文件里,找到 sites-available 文件夹里对应的文件并修改,修改后的配置文件差不多是下面的样子。
ServerName www.a.com
DocumentRoot “/var/site/www/”
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://host.com/
ProxyPassReverse / http://host.com/
ErrorLog “/var/log/apache2/www.log”
CustomLog “/var/log/apache2/www_accesses.log” common

ProxyRequests 是代理的类型,如果是 on 呢就表示正向代理,我们这里需要的是反向代理,就设置为off。ProxyPassReverse / http://host.com/  呢就表示把所有的来自根目录的请求都代理到 http://host.com/ 的根目录下。

第三步呢,就是重启 apache。使用 sudo /etc/init.d/apache2 restart 命令,然后刷新页面就大功告成了。

最后回想起来,虽然很简单,是真的折腾了好久。另外在今天知道了一个小技巧,博客本来是 www.withonly.com,我是想直接输入 withonly.com 也可以直接访问的,但一直不知道要如何设置。总不至于需要新设置一个虚拟目录吧,按照 IIS 里的操作来看,应该是个很简单的,这个也一直没有好意思问ququ。

好在今天晓得了,在配置文件里设置 ServerAlias 就可以了。好吧,这里接受你们尽情的鄙视。

文字写到这里基本上就算是完事了,剩下要考虑的就是如何尽快地渲染页面,我刚才看了下效果,一个请求从国外再到国内,速度还是慢了许多,这个优化我还是放在前端去解决吧。

夜深了,祝大家好梦。                –2012-02-23   1:23

分类: 日常 标签: ,