何為反向代理庆揩,我需要實(shí)現(xiàn)什么功能?
需求描述:我有一臺服務(wù)器跌穗,想要建立兩個(gè)不同的網(wǎng)站订晌,每個(gè)網(wǎng)站占用一個(gè)端口,都指向了該服務(wù)器的ip蚌吸。綁定域名的時(shí)候锈拨,域名是指向ip的。
比如羹唠,www.domain.com:8080等同于ip:8080, www.domain2.com:8090等同于ip:8090
那么如何實(shí)現(xiàn)www.domain.com等同于ip:8080, www.domain2.com等同于ip:8090
即如何不帶端口的域名直接訪問我們建立的站點(diǎn)奕枢!
上面的解釋歸結(jié)為一個(gè)術(shù)語:反向代理
我的apache版本
httpd -v
# Server version: Apache/2.2.15 (Unix)
# Server built: Nov 18 2016 23:48:55
熟悉httpd命令娄昆,以便重啟服務(wù)
service httpd {start|stop|restart...}
或者
/etc/init.d/httpd {start|stop|status|restart|condrestart|try-restart|reload|force-reload}
配置反向代理
主要文件:/etc/httpd/conf/httpd.conf
首先了解虛擬主機(jī)(virtual host)
術(shù)語虛擬主機(jī)指的是在單一機(jī)器上運(yùn)行多個(gè)網(wǎng)站 (例如 www.company1.com 和 www.company2.com) 。 虛擬主機(jī)可以“基于 IP”缝彬,即每個(gè) IP 一個(gè)站點(diǎn)萌焰; 或者“基于名稱”, 即每個(gè) IP 多個(gè)站點(diǎn)谷浅。這些站點(diǎn)運(yùn)行在同一物理服務(wù)器上的事實(shí)不會明顯的透漏給最終用戶扒俯。
從官網(wǎng)解釋看,就是本文主要實(shí)現(xiàn)的效果一疯,肯定了我們的方向沒有搞錯(cuò)撼玄。
### Section 3: Virtual Hosts
# ... 這下面是配置virtual host的地方
# 找到這一行,去掉注釋
NameVirtualHost *:80
# 配置一個(gè)virtualHost
<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>
結(jié)合virtualhost和proxy實(shí)現(xiàn)反向代理
<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:8080/
ProxyPassReverse http://localhost:8080/
</Location>
</VirtualHost>
示例代碼
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.domain.red
ServerAlias domain.red
DocumentRoot /var/www/html/domain
</VirtualHost>
<VirtualHost *:80>
ServerName www.songsong.red
ServerAlias songsong.red
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:8080/
ProxyPassReverse http://localhost:8080/
</Location>
</VirtualHost>
參考鏈接
apache.org.name-based.virtualhosts
apache.org.proxy
通過 Apache 代理訪問 Node