Amazon-Ec2

在 AWS EC2 上為 Tomcat 8 Web 服務設置 VirtualHost

  • May 21, 2017

除了 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 代理?其次嘗試刪除 ProxyPreserveHost On

另外確保埠是打開的;最簡單的檢查方法是訪問http://www.yougetsignal.com/tools/open-ports/(輸入網站地址和埠 80)

希望這可以幫助

(1) 要刪除/MyService/部分 url,請將MyService.war文件重命名為ROOT.war並將其複製到 webapps 文件夾中sudo cp。通常,您的 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>

引用自:https://serverfault.com/questions/700547