在AWS EC2上为Tomcat 8 webservice设置VirtualHost

除了AWS EC2 Linux上的默认Apache之外,我还安装了Tomcat 8并在其上部署了一个Web服务。

当前的URL(工作)是http://example.com:8080/MyService/api/generatePath

我想使这个更短的子域api.mydomain.com,以便我可以使用这个URL: http ://api.example.com/generatePath。

这是我在/etc/httpd/conf/httpd.conf所做的,但是不起作用:

 <VirtualHost *:80> ServerName api.example.com ProxyRequests Off ProxyPreserveHost On <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://localhost:8080/MyService/api ProxyPassReverse / http://localhost:8080/MyService/api </VirtualHost> 

首先你在Apache上启用mod proxy? 其次尝试删除ProxyPreserveHost On

另外确保港口正在开放; 最简单的方法来检查是http://www.yougetsignal.com/tools/open-ports/ (input网站地址和端口80)

希望这可以帮助

(1)要删除/MyService/你的url的一部分,将你的MyService.war文件重命名为ROOT.war并使用sudo cp将它复制到你的webapps文件夹中。 通常情况下,你的tomcat安装应该会在同一个文件夹中自动生成一个ROOT目录。

(2)要删除:8080,请通过:80访问站点,而不是在URL栏上列出,使用您所陈述的已安装的httpd.conf 。 编辑以下两个东西看起来像这样。

 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so <VirtualHost *:80> ServerName api.example.com ProxyRequests On ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ <Location "/"> Order allow,deny Allow from all </Location> </VirtualHost>