1. 程式人生 > >Apache配置多站點域名訪問,並反向代理到Tomcat專案

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的站點服務。

題主只是一個入門的小學生,希望大家多多指教!如果該帖子確實能解決您的問題,望多多留言,謝謝!