这么一个需求:同一台服务器上有两个应用,如
http://hostA:8080/services和
http://hostA:8080/admin外部访问时,需要从不同的域名访问,如
http://services.host.com和
http://admin.host.com一开始给他们这么一个比较简单的解决方案:
分别把services和admin两个应用,部署到不同的两个端口上,如
services ->
http://hostA:8081/admin ->
http://hostA:8082/接着在防火墙配两个公网IP,然后dns上把services.host.com和admin.host.com配置到这两个IP上。
当请求到达防火墙时,防火墙根据所访问的ip转发到hostA的对应端口上。
前
方用的防火墙是我们公司的Audemon
100,和公司的Audemon系统组的交流后得知,目前的防火墙版本不支持同时配置两个ip,要到六月底才能出版本支持。!@…%#%…%¥,晕倒,好
像这是很基本的功能来的吧,居然还不支持。没办法,此路不通。由于防火墙是不管域名的(因为域名资料是通过应用层传输的),那更别指望防火墙根据域名转发
了。
因此,我们只好提供了软件级的解决方案,让前方在Tomcat前加一个Apache 2.2,通过Apache的Virtual Host + AJP实现转发。
Apache的部分配置如下:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName host1.com
ProxyPass / ajp://host1.com:8009/
ProxyPassReverse / ajp://host1.com:8009/
</VirtualHost>
<VirtualHost *:80>
ServerName host2.com
ProxyPass / ajp://host2.com:8019/
ProxyPassReverse / ajp://host2.com:8019/
</VirtualHost>
Tomcat也需要配置AJP Connector,如host1.com的配置
<Connector port=”8009″ enableLookups=”false” redirectPort=”8443″ protocol=”AJP/1.3″ />
这个方案相对于防火墙的硬件方案,性能上要差一些,但还是不错的。
另
外还有一种方案是通过iptables的domain module来实现,但这个domain
module好像是国内的某个高手写的,只更新到v0.02版本,并没有提交到iptables的标准里。虽然可以用而且性能比Apache的方案要高一
些,但是风险较大,而且配置麻烦(既要编译内核,又要配置iptables的rules),所以没有用这种方式。
文章来源:
http://blog.163.com/ccbobo_cat/blog/static/320994622009326115641438
分享到:
相关推荐
每个 `<VirtualHost>` 块对应一个不同的域名,并且可以设置不同的 Django 设置文件。 ##### 3. 处理静态文件 对于 Django 中的静态文件如图片、CSS 和 JavaScript 文件等,推荐使用 Apache 直接提供服务而不是通过...
### Python + Django + Apache 的配置方法详解 #### 一、前言 在现代Web开发领域,Python凭借其简洁高效的语法特性以及丰富的库支持而受到广大开发者们的青睐。Django作为一款基于Python的开源Web框架,它能够帮助...
之后,编辑VirtualHost块来设置域名、WSGI脚本别名以及静态文件的别名,这些别名指向实际的文件路径,以便Apache能够正确地服务于这些文件。 在Python文件夹内,需要创建一个wsgi文件,这里以order.wsgi为例。在这...
本文档将详细介绍 Testlink 的安装步骤及基本使用方法。 #### 二、Testlink 安装指南 在开始安装 Testlink 之前,请确保您的服务器环境满足以下要求: - 操作系统:推荐使用 Linux 发行版如 Ubuntu 或 CentOS - ...
<VirtualHost *:80> DocumentRoot "/your/http/document/root" Options FollowSymLinks AllowOverride None Order allow,deny Allow from all AllowOverride None Order allow,deny Deny from all ...
<VirtualHost *:80> ServerName svn.example.com DocumentRoot "/var/repos" DAV svn SVNParentPath "/var/repos" AuthType Basic AuthName "Subversion Repository" AuthUserFile "/etc/httpd/passwd" ...
同样,先放置SSL证书和私钥,然后在VirtualHost配置中指定: ``` SSLEngine on SSLCertificateFile /path/to/your/cert.crt SSLCertificateKeyFile /path/to/your/server.key ``` 修改后,重新加载Apache配置...
例如,在Apache中,可以通过`.htaccess`文件或者`VirtualHost`配置来设置环境变量。在Nginx中,可以在`nginx.conf`或者特定的`server`块中设置。确保环境变量已正确设置且能被Web服务器读取是`$_ENV`能够获取到值的...