前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >liferay和proxy server那点事

liferay和proxy server那点事

作者头像
littlelyon
发布2018-10-19 15:08:05
8240
发布2018-10-19 15:08:05
举报
文章被收录于专栏:狮乐园

Set up a server to use as a proxy for requests from Liferay (such as Apache web server)

环境

  • Ubuntu 14.04
  • httpd(apache2 for Ubuntu)
  • liferay 7.0

知识背景

这里的proxy server应当是指正向代理(forward proxy)。正向代理大概的意思,就是一个位于客户端和原始服务器之间的服务器,当客户端为了从原始服务器拿一些内容的时候,不向原始服务器直接发送请求而是向代理服务器发送,代理服务器转发客户端请求给原始服务器并将获得内容返还给客户端。

正向代理的意思,大体就是一个跳板,对于你不方便去的地方或者不能去的地方,它可以带你去,比如一些V**代理,其原理就是你访问代理服务器,代理服务器访问被墙的网站,之后把内容返还给你。

既然说了正向代理,就捎带说一下反向代理。反向代理和正向代理相反,对与访问者来说,你访问一个反向代理服务器后,它同样会从原始服务器拿数据,但是这里和正向代理的区别是,访问者不需要进行额外的设置,反向代理服务器判断请求如何转发给原始服务器,之后把内容返还给客户端。

反向代理的意思,大体就是一个服务柜台,对于你不方便去的地方或者不能去的地方,有人可以帮你去,比如一些设置了防火墙的原始服务器为了提供给外网用户访问,就会使用反向代理。

步骤

配置proxy server

以ubuntu为例(windows应该会更方便),直接用apt-get安装

代码语言:javascript
复制
sudo apt-get install apache2

之后server的根目录是

代码语言:javascript
复制
/etc/apache2

进入这里,会发现有一个apache2.conf的配置文件,这个文件是apache2的主要配置文件,其中包含了若干子配置文件,分别配置不同模块的配置,看注释就可以大概知道每个模块是做什么的。

我们这里需要着重看的是ports.conf000-default.conf

前者主要设置一些关于server监听端口的配置,它的源码如下

代码语言:javascript
复制
Listen 80

<IfModule ssl_module>
	Listen 443
</IfModule>

<IfModule mod_gnutls.c>
	Listen 443
</IfModule>

大体的意思是

监听80端口,如果有ssl_module和mod_gnutls.c模块加载的话,同时也监听443端口。

如果你还想监听别端口,比如81,可以直接添加

代码语言:javascript
复制
Listen 81

后者主要设置一些关于虚拟主机的配置,apache2.conf中有一行代码

代码语言:javascript
复制
IncludeOptional sites-enabled/*.conf

意思是会在启动服务器的时候,把所有./sites-enabled目录下的配置文件都包含进来,所以我们可以自己新建一个.conf文件,也可以直接更改默认的文件,也就是000-default.conf

配置VirtualHost

配置完proxy server的监听端口,该配置虚拟主机了,打开默认配置文件,添加如下代码

代码语言:javascript
复制
ProxyRequests On
ProxyVia On

<VirtualHost *:80>  
	ServerAdmin prograsliu@gmail.com
    ServerName www.test.com
    ServerAlias test.com
    ErrorLog "logs/test.com-error.log"
    CustomLog "logs/test.com-access.log" common    
    
    #正向代理设置
    ProxyRequests On
    ProxyVia On

    <Proxy *>
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Proxy>
</VirtualHost>

开启Apache正向代理

代码语言:javascript
复制
ProxyRequests On

之后设置控制位于代理服务器链中的代理请求的流向

代码语言:javascript
复制
ProxyVia On

每个请求和应答都会对应当前主机得到一个”Via:”头。

再设置对apache监听主机的请求的匹配规则

代码语言:javascript
复制
<VirtualHost *:80>

这个表示匹配所有80端口的请求,之后又由于这个标签中还有一些其他的设置,如下

代码语言:javascript
复制
ServerName www.test.com
ServerAlias test.com
ErrorLog "logs/test.com-error.log"
CustomLog "logs/test.com-access.log" common

因此,匹配规则会变为,匹配所有请求www.test.com:80这个主机的请求,同时呢,这个主机的小名是test.com,日志文件根据事件类型按不同路径保存。

测试一下

设置到这里,proxy server已经设置完成,因此也可以来简单测试一下,比如打开FF浏览器,之后在Preference > Advanced > Connection中,选择manual proxy configuration,然后把代理配置填进去,比如

代码语言:javascript
复制
HTTP proxy: www.test.com
Port: 80

注意下面有一个No Proxy for的选项,因此不要拿本地的请求作测试。

然后访问www.163.com,使用f12抓包,可以发现请求的相应头(response header)中,会增加一个字段

代码语言:javascript
复制
Via: "1.1 www.test.com"

大体意思就是,你打开的163的页面,并不是从网易的浏览器直接获得的,而是从你配置的叫做www.test.com的代理服务器获得的,真正访问网易服务器的是www.test.com。

配置liferay

接下来就很简单了,只需要让liferay来使用我们配置好的proxy server即可。

liferay中的system.properties有如下三个参数,

代码语言:javascript
复制
# Set the location of the HTTP proxy that the portal will use to fetch
# external content.
#
# Set http.nonProxyHosts for hosts that will not be proxied. This is useful
# for proxied environments where you need direct access to internal servers.
# This should follow the same semantics as the java.net package.
#
#http.proxyHost=192.168.0.200
#http.proxyPort=4480
#http.nonProxyHosts=192.168.0.250

最后一个不用管,只需要配置前两个,把它改成我们配置的proxy server对应的参数即可,如下

代码语言:javascript
复制
http.proxyHost=www.test.com
http.proxyPort=80

之后就大功告成了。当portal从外部的server,获取资源时,会使用代理,比如使用亚马逊的s3 store云储存服务时。

参考

Apache配置正向代理与反向代理

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境
  • 知识背景
  • 步骤
    • 配置proxy server
      • 配置VirtualHost
        • 测试一下
          • 配置liferay
            • 参考
        相关产品与服务
        轻量应用服务器
        轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档