您的位置:首页 > 运维架构 > 反向代理

apache服务器的搭建配置以及正反向代理

2016-03-22 21:39 447 查看
一开始写总结的时候,我刚刚配置了apache服务器的URL重写和访问规则顺手就写了,现在发现我应该先写apache服务器基本知识来着…

   (1)首先如何安装apache服务器:

       因为我喜欢写php(世界上最好的语言)脚本,我的服务器是用phpstudy搭建的,不需要太多改动,如果不是用这种开发环境搭建的,在官网下载最新的apache server手动安装就好了。初学者建议使用集成开发环境。

   (2) apache服务器的基本配置:

       首先要apache服务器监听80端口 打开httpd文件搜索Listen 找到改成Listen 80就行了;搜索DocumentRoot修改后面地址,改成你服务器放置网站的文件夹,搜索<IfModule log_config_module> 这是用来配置apache服务器的日志的, 将 CustomLog"logs/access.log" combined前面的#号去掉启用日志功能,你还可以去配置日志的格式,具体方法自行百度吧,我这里就不写了,日志格式我很少去管他,东西也比较多,写的时候都是百度的…

      下面我来说一下apache服务器的多站点,说起多站点,还是IIS的图形化界面看起来亲民,不过IIS并发稳定性我已经无奈,虽然升华网搭建在IIS上面,但是我并不喜欢IIS,有时间了改在apache上面吧,关于并发的稳定性相关配置知识以后再说,总之IIS不是很好用…不知道微软网站如何做到稳定性的,负载均衡得做的多好呀。

打开vhosts.conf文件(如果没有,建议自行创建然后再httpd文件加入Include conf/vhosts.conf 引入)

<VirtualHost *:80>

     DocumentRoot C:\xxx\xxx

    ServerName xxx.xxx.cn

     ProxyPass /xx/  http://localhost:8080

  ProxyPassReverse /xx/  http://localhost:8080

</VirtualHost>

<VirtualHost *:80>

     DocumentRoot C:\xxx\yyy

    ServerName yyy.xxx.cn

ProxyPass /zz/  !

     ProxyPass /xx/  http://localhost:8080
  ProxyPassReverse /xx/  http://localhost:8080
</VirtualHost>

       这样就建立了两个站点,都是监听80端口,apache的多站点是通过虚拟主机(VirtualHost)来实现的,所以建立几个站点就建立几个虚拟主机就好啦,如果多个网站指向同一个站点可以在ServerName 这项添加多个域名中间空格隔开。

       这里顺便说一下Proxy知识吧,哎,提前没有规划好,想起来啥说啥,先这样子吧,最近状态不好不想写代码,时间还是比较充裕的,多写写总结~

这个是apache的代理,代理分为正向代理和反向代理,正向代理就是我们平常所说的代理,他是翻墙的一种手段,网上的免费代理服务器也是很多



       哎,墙外人们都生活在水深火热之中,还是生活在墙里面好,而且通过这种免费的代理服务器,你上网的数据都被代理服务器截获了,所以不建议用这种免费的代理服务器,有安全隐患。

       正向代理是你告诉代理服务器你要访问什么网页,代理服务器通过你的请求将目标网页获取下来转发给你;而反向代理是你访问代理服务器,代理服务器在别处获取网页信息并转发给你,你并不知道你访问的网页的真实地址,只知道一个代理服务器和你访问代理服务器的URL。

       正向代理一般很少去搭建,而反向代理是一项很有用的技术,他可以掩藏你的真实ip,网址和端口,而且通过反向代理你可以搭建自己的负载均衡网络,现在规模不小的公司都是采用代理服务器的形式的,比如你访问的www.baidu.com只是指向百度的代理服务器,而代理服务器后面是分布在全国各个数据中心的服务器集群。

(1)首先确保一下模块都被加载了

mod_proxy.so

mod_proxy_ajp.so

mod_proxy_balancer.so

mod_proxy_connect.so

mod_proxy_ftp.so

mod_proxy_http.so

其实如果你是用phpstudy这类集成开发环境,这些模块都被默认开启了~

(2)正确书写Proxy部分

  ProxyPass /zz/ ! 

  !号表示禁止代理,也就是访问这个虚拟主机本来的目录

 

  ProxyPass /xx/  http://localhost:8080
  这个表示所有http://xxx.com/xx/...请求都被转发到8080这个端口了,如果你的主站是php写的而其中某些模块是jsp写的可以用这个方式转发到tomcat上面。

 

  ProxyPassReverse /xx/  http://localhost:8080
      它一般和ProxyPass指令配合使用,此指令使Apache调整HTTP重定向应答中Location,Content-Location, URI头里的URL,这样可以避免在Apache作为反向代理使用时,。后端服务器的HTTP重定向造成的绕过反向代理的问题。

       ProxyPassReverse的作用就是反向代理,如果没有加这样的反向代理设置的情况下,访问http://www. xx.com/ xx /a,如果www. xx.com对请求进行了redirect至http://www. xx.com/b,那么,客户端就会绕过反向代理,进而访问http://www. xx.com/ xx /b。如果设置了反向代理,则会在转交HTTP重定向应答到客户端之前调整它为http://www. xx.com/ xx /a/b,即是在原请求之后追加上了redirect的路径。

 

还有一个是ProxyPassMatch,这个我没有在服务器使用,不过也在这里写一下吧

他的语法是:ProxyPassMatch[regex] !|url

这个实际上是url正则匹配,而不是简单的前缀匹配,匹配上的regex部分是会带到后端的url的,这个是与ProxyPass不同的。使用示例:

1、ProxyPassMatch ^/images !

这个示例表示对/images的请求,都不会被转发。

2、ProxyPassMatch ^(/.*\.gif)$ http://zz.xx.com$1
这个示例表示对所有gif图片的请求,都被会转到后端,如此时请求http://xx.com/xx/zz.gif,那内部将会转换为这样的请求http://zz.xx.com/xx/zz.gif

 

其实还可以搭建负载均衡网络,我就一台服务器就不搞负载均衡了...

没怎么写过这些,排版好头疼,就这样子吧,仔细看应该可以看懂我在写什么吧…但愿之后我自己可以看懂…

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息