前言:最近心情不太好,所以就来写写博客。之前一直想写,怪自己太懒,趁现在还比较闲,就赶紧写了。热情没了之后,我想我也不会再点开博客了。。说到服务器,“鲁大师”说其实就是一部电脑。长篇大论的话百度上有的是,这里我总结一下我自己所搭的服务器的方法和技巧。
一、tomcat+phpstudy(最新版支持php7的是2016版)
对于新手来说,直接下载集成了apache、mysql的phpstudy或者xxamp都是很机制的选择。
二、.正向代理和反向代理
三.apache 整合 tomcat
方法一,使用 mod_jk。很多网站上介绍到 Apache HTTP server 和 Tomcat server 整合的时候,都是在介绍 mod_jk.so 的使用,这是一种比较老的方法,并且需要额外下载 mod_jk。Apache 和 Tomcat 的默认配置文件都需要改动。
方法二, URL rewrite,也就是对于指定格式的 URL,转发给某个 Tomcat 的网址。这里所说的指定格式,是指 Apache 所使用的正则表达式,通俗地将,是一种类似 * 的一种比较高级通配符。这种方法不需要下在额外的文件,只需要配置 Apache。
方法三,mod_proxy_ajp,仅在 Apache 2.1 及以后的版本中可用,Apache 自带的一个新功能模块。这时 Apache 使用 Apache JServ Protocol 与 Tomcat 通讯。不需要下在额外的文件,需要改动Apache 和 Tomcat 的默认配置文件都需要改动。
方法四,mod_proxy。其实 mod_proxy 既可以做类似于 Wingate 一样的公司局域网共享上网代理,也可以做反向代理(Reverse proxy)。这里使用的是反向代理功能,用户端浏览器不需要把代理服务器改成这里的 Apache 地址。mod_proxy 是 Apache 自带功能,并且配置比较简单。
这里主要讲解一下方法四(出于方便和安全角度)
一.apache中的参数问题
1、ProxyPass:
语法:ProxyPass [path] !|url
它主要是用作URL前缀匹配,不能有正则表达式,它里面配置的Path实际上是一个虚拟的路径,在反向代理到后端的url后,path是不会带过去的,使用示例:
1)、ProxyPass /images/ !
这个示例表示,/images/的请求不被转发。
2)、ProxyPass /mirror/foo/ http://backend.example.com/
我们假设当前的服务地址是http://example.com/,如果我们做下面这样的请求:
http://example.com/mirror/foo/bar
那将被转成内部请求:
http://backend.example.com/bar
2、ProxyPassMatch:注:配置的时候,不需要被转发的请求,要配置在需要被转发的请求前面。
语法:ProxyPassMatch [regex] !|url
这个实际上是url正则匹配,而不是简单的前缀匹配,匹配上的regex部分是会带到后端的url的,这个是与ProxyPass不同的。使用示例:
1、ProxyPassMatch ^/images !
这个示例表示对/images的请求,都不会被转发。
2、ProxyPassMatch ^(/.*\.gif)$ http://backend.example.com$1
这个示例表示对所有gif图片的请求,都被会转到后端,如此时请求http://example.com/foo/bar.gif,那内部将会转换为这样的请求http://backend.example.com/foo/bar.gif。
3、ProxyPassReverse
语法:ProxyPassReverse [路径] url
它一般和ProxyPass指令配合使用,此指令使Apache调整HTTP重定向应答中Location, Content-Location, URI头里的URL,这样可以避免在Apache作为反向代理使用时,。后端服务器的HTTP重定向造成的绕过反向代理的问题。参看下面的示例:
ProxyPass /example http://www.example.com/
ProxyPassReverse /example http://www.example.com/
ProxyPassReverse的作用就是反向代理,如果没有加这样的反向代理设置的情况下,访问http://www.test.com/example/a,如果www.example.com对请求进行了redirect至http://www.example.com/b,那么,客户端就会绕过反向代理,进而访问http://www.test.com/example/b。如果设置了反向代理,则会在转交HTTP重定向应答到客户端之前调整它为http://www.test.com/example/a/b,即是在原请求之后追加上了redirect的路径。
二.配置方法
下载 Apache web server 2.2,安装完成后,修改安装目录下的 conf/httpd.conf 文件,将以下两行前的注释字符 # 去掉。
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
在这个配置文件最后,加上
ProxyPass /app1 http://<tomcat_server_address>:port/url1
ProxyPassReverse /app1 http://<tomcat_server_address>:port/url1
保存配置文件后重新启动 Apache 就可以了。当用户访问
http://<apache_server_address>/app1 的时候,Apache 后台自动将请求转发给 Tomcat ,用户只认为 Apache server 就是他所要的应用服务器。