如果我们只有一台服务器,应该怎么实现让这台服务器同时处理 PHP 和 JSP 的请求?
这里的解决方案是通过 Apache 的虚拟主机(vhost)来进行端口转发。
Apache 会通过访问服务器的域名将请求转发至不同的端口或者不同的服务器。
0X00 前提 & 目的
前提:
拥有一个域名,并有两个 A 解析,同时解析到这台服务器的 IP
分别拥有一个 JSP 和 PHP 的页面(网站)
目的:
使用 php.test.com 访问的时候解析到 PHP 的网站上
使用 jsp.test.com 访问的时候解析到 JSP 的网站上
操作系统:
Centos 7.x 如果是之前的版本或是其他系统可能出现不同的情况
0X01 安装 httpd (Apache)
安装并启动服务
yum install httpd
systemctl start httpd.service
0X02 安装 PHP
yum install php
0X03 安装 JDK 用来配合 JSP
yum install java-1.8.0-openjdk
0X04 安装 tomcat 用于解析 JSP 页面
yum install tomcat tomcat-webapps tomcat-admin-webapps
systemctl start tomcat.service
0X05 配置 httpd 用于同时支持 PHP 和 JSP
打开配置文件
vim /etc/httpd/conf/httpd.conf
在配置文件的最前端添加如下内容
NameVirtualHost *:80
<VirtualHost *:80>
ServerName php.test.com #指定一个域名
DocumentRoot /var/www/html #PHP网站的位置
ErrorLog logs/php.test.com-error.log #日志位置
CustomLog logs/php.test.com-access.log common #日志位置
</VirtualHost>
<VirtualHost *:80>
ServerName jsp.test.com #指定另一个域名
DocumentRoot /var/lib/tomcat/webapps/ROOT #JSP网站的位置
ErrorLog logs/jsp.test.com-error.log #日志位置
CustomLog logs/jsp.test.com-access.log common #日志位置
ProxyPass / http://127.0.0.1:8080/ #转发位置
ProxyPassReverse / http://127.0.0.1:8080/ #转发位置
</VirtualHost>
0X06 最后
systemctl restart httpd.service
systemctl restart tomcat.service
现在就可以使用 php.test.com 和 jsp.test.com 分别访问到 PHP 和 JSP 的页面了