問題描述:服務器上裝配了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"
將雙引號內的內容自己Apache服務站點部署的根目錄替換,如上圖,我的PHP項目全部放置于htdocs目錄下
5.然后在httpd.conf文件的同級目錄extra目錄下的httpd-vhosts.conf文件中修改虛擬站點域名訪問配置。
DocumentRoot "${SRVROOT}/htdocs" ServerName 127.0.0.1
有的博客上說 127.0.0.1這組必須為第一組即默認組,否則會出現localhost不能訪問的問題,這個題目也沒有出現類似的問題,但是也提醒一下大家,剩下的站點部署如下所示:
# Add any other Virtual Hosts below# ServerAdmin webmaster@dummy-host.example.com DocumentRoot "${SRVROOT}/htdocs/項目目錄" ServerName -----域名-------#將域名替換為自己的站點域名 # ServerAlias www.dummy-host.example.com ErrorLog "logs/-----域名--------error.log"#將域名替換為自己的站點域名 CustomLog "logs/-----域名-------.log" common##將域名替換為自己的站點域名
6.好的,Apache的80端口服務部署完成,重啟即可生效,訪問域名即可訪問到Apache的站點服務,接下來是80端口的Apache轉發到8080端口的Tomcat項目,在httpd-vhosts.conf文件中配置如下:
# ServerAdmin webmaster@dummy-host2.example.com ProxyPreserveHost On ProxyRequests Off ProxyPass / http://localhost:8080/項目名 ProxyPassReverse / http://localhost:8080/項目名 ServerName ---域名----#將域名替換為自己的站點域名 ErrorLog "logs/---域名-----error.log"#將域名替換為自己的站點域名 CustomLog "logs/---域名----.log" common#將域名替換為自己的站點域名
具體指令的含義如下:
ServerAdmin:服務器返回給客戶端的錯誤信息中包含的管理員郵件地址 ,置了在所有返回給客戶端的錯誤信息中包含的管理員郵件地址。如果httpd不能將提供的參數識別為URL,它就會假定它是一個email-address ,并在超連接中用在mailto:后面。推薦使用一個Email地址,因為許多CGI腳本是這樣認為的。如果你確實想使用URL,一定要保證指向一個你能夠控制的服務器,否則用戶將無法確保一定可以和你取得聯系。 剩下的都是反向代理的配置,詳細了解請點擊鏈接
7.重啟Apache服務器,可以看到效果,8080端口不再出現,域名可以直接訪問到Tomcat的站點服務。
站長資訊網