Apache配置多站点域名访问,并反向代理到Tomcat项目

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/birduncle/article/details/82632722

问题描述:服务器上装配了Apache服务和Tomcat服务,Apache服务按照惯例分配80端口,Tomcat服务按照惯例占用8080端口,但是本人因为项目需要,开发了几个PHP的项目,需要Apache服务进行支持,而且需要不同的域名访问对应的项目。另外,主机上还存在JavaEE项目,自然Tomcat也是不可避免的,所以需要给Tomcat项目也分配对应的域名,但是Tomcat项目不希望带着端口号(比如http://domian:8080),所以该场景下将会用到Apache转发,即80端口转向8080,对外不公开端口号。

解决方案

1.打开Apache安装位置的httpd.conf文件,一般位于 

Apache安装根目录/conf/httpd.conf

2.找到以下代码:

#LoadModule vhost_alias_module modules/mod_vhost_alias.so

去掉最前面的注释“#”,目的是启用apache的虚拟主机功能。

3.然后继续查找以下代码:

#Include conf/extra/httpd-vhosts.conf

去掉最前面的注释“#”,目的是启用多站点域名配置服务的配置文件。

4.然后找到以下代码:

DocumentRoot "${SRVROOT}/htdocs"
<Directory "${SRVROOT}/htdocs">

将双引号内的内容自己Apache服务站点部署的根目录替换,如上图,我的PHP项目全部放置于htdocs目录下

5.然后在httpd.conf文件的同级目录extra目录下的httpd-vhosts.conf文件中修改虚拟站点域名访问配置。

<VirtualHost _default_:80>
DocumentRoot "${SRVROOT}/htdocs"
ServerName 127.0.0.1
</VirtualHost>

有的博客上说 127.0.0.1这组必须为第一组即默认组,否则会出现localhost不能访问的问题,这个题目也没有出现类似的问题,但是也提醒一下大家,剩下的站点部署如下所示:

# Add any other Virtual Hosts below

<VirtualHost *:80>
  #  ServerAdmin [email protected]
    DocumentRoot "${SRVROOT}/htdocs/项目目录"
    ServerName -----域名-------#将域名替换为自己的站点域名
 #   ServerAlias www.dummy-host.example.com
    ErrorLog "logs/-----域名--------error.log"#将域名替换为自己的站点域名
    CustomLog "logs/-----域名-------.log" common##将域名替换为自己的站点域名
</VirtualHost>

6.好的,Apache的80端口服务部署完成,重启即可生效,访问域名即可访问到Apache的站点服务,接下来是80端口的Apache转发到8080端口的Tomcat项目,在httpd-vhosts.conf文件中配置如下:

<VirtualHost *:80>
#    ServerAdmin [email protected]
	ProxyPreserveHost On
    ProxyRequests Off
     ProxyPass / http://localhost:8080/项目名
    ProxyPassReverse / http://localhost:8080/项目名
    ServerName ---域名----#将域名替换为自己的站点域名
    ErrorLog "logs/---域名-----error.log"#将域名替换为自己的站点域名
    CustomLog "logs/---域名----.log" common#将域名替换为自己的站点域名
</VirtualHost>

具体指令的含义如下:

  • ServerAdmin:服务器返回给客户端的错误信息中包含的管理员邮件地址 ,置了在所有返回给客户端的错误信息中包含的管理员邮件地址。如果httpd不能将提供的参数识别为URL,它就会假定它是一个email-address ,并在超连接中用在mailto:后面。推荐使用一个Email地址,因为许多CGI脚本是这样认为的。如果你确实想使用URL,一定要保证指向一个你能够控制的服务器,否则用户将无法确保一定可以和你取得联系。
  • 剩下的都是反向代理的配置,详细了解请点击链接

7.重启Apache服务器,可以看到效果,8080端口不再出现,域名可以直接访问到Tomcat的站点服务。


题主只是一个入门的小学生,希望大家多多指教!如果该帖子确实能解决您的问题,望多多留言,谢谢!


猜你喜欢

转载自blog.csdn.net/birduncle/article/details/82632722