Apache配置多站點域名訪問,並反向代理到Tomcat專案
問題描述:伺服器上裝配了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的站點服務。
題主只是一個入門的小學生,希望大家多多指教!如果該帖子確實能解決您的問題,望多多留言,謝謝!