liferay和proxy server那点事

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)。正向代理大概的意思,就是一个位于客户端和原始服务器之间的服务器,当客户端为了从原始服务器拿一些内容的时候,不向原始服务器直接发送请求而是向代理服务器发送,代理服务器转发客户端请求给原始服务器并将获得内容返还给客户端。

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

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

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

步骤

配置proxy server

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

sudo apt-get install apache2

之后server的根目录是

/etc/apache2

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

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

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

Listen 80

<IfModule ssl_module>
	Listen 443
</IfModule>

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

大体的意思是

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

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

Listen 81

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

IncludeOptional sites-enabled/*.conf

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

配置VirtualHost

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

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正向代理

ProxyRequests On

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

ProxyVia On

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

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

<VirtualHost *:80>

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

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,然后把代理配置填进去,比如

HTTP proxy: www.test.com
Port: 80

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

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

Via: "1.1 www.test.com"

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

配置liferay

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

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

# 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对应的参数即可,如下

http.proxyHost=www.test.com
http.proxyPort=80

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

参考

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

DNS从入门到管理(一)

DNS概述 DNS(Domain Name System,域名系统),域名和IP地址相互映射的一个分布式数据库,通过主机名,最终得到该主机名对应的IP地址的过程...

5736
来自专栏运维小白

12.22 php-fpm慢执行日志

php-fpm慢执行日志目录概要 vim /usr/local/php-fpm/etc/php-fpm.d/www.conf//加入如下内容 request_s...

3437
来自专栏钟绍威的专栏

apache反向代理一、泛解析域名二、APACHE配置

正向代理是客户端发送请求给代理服务器,代理服务器将请求发给实际处理的服务器 反向代理是客户端发送请求给服务器(实际上是个代理服务器),服务器将请求发给实际处理的...

3737
来自专栏xcywt

WireShark 使用

1、干货 Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wire...

2279
来自专栏耕耘实录

关于FTP主动模式与被动模式的一点理解

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

1042
来自专栏linux系统运维

原 添加自定义监控项目,配置邮件告警,测

1983
来自专栏Netkiller

PHP高级编程之守护进程

PHP高级编程之守护进程 摘要 2014-09-01 发表 2015-08-31 更新 2015-10-20 更新,增加优雅重启 ---- 目录 1. 什么是守...

3234
来自专栏linux运维学习

linux学习第二十八篇:监控io性能,free命令,ps命令,查看网络状态,linux下抓包

监控磁盘io性能 (命令:iostat,iotop) 查看磁盘读写状态: iostat -x %util:表示io等待,也就是磁盘使用占用cpu百分比。...

5909
来自专栏Netkiller

PHP高级编程之守护进程

PHP高级编程之守护进程 摘要 2014-09-01 发表 2015-08-31 更新 2015-10-20 更新,增加优雅重启 ---- 目录 1. 什么是守...

3087
来自专栏耕耘实录

CentOS7中firewalld的安装与使用详解

1、firewalld提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。它支持 IPv4, IPv6 防火墙设置以及以太网...

682

扫码关注云+社区