同一個域名,想綁定多個Web應用,簡單的方式就是通過反向代理的方式實現。
比如我有一個域名www.xxx.com,并已映射到我本地服務器,同時又有兩個應用blog和photo,已部署啟動在后臺服務器上,blog部署在本地3000端口(http://127.0.0.1:3000/blog),Photo部署在本地3001端口(http://127.0.0.1:3001/photo)。希望通過www.xxx.com/blog訪問博客應用,通過www.xxx.com/photo訪問相冊應用,這時就可以用上反向代理的功能!
對于
Apache來說,反向代理的命令是ProxyPass。找到你的Apache配置文件(我的在/etc/apache2/sites-enable目錄下),在VirtualHost節點里加上類似如下的語句:
ProxyPass /blog http://127.0.0.1:3000/blog ProxyPass /photo http://127.0.0.1:3001/photo |
對于Nginx來說,反向代理的命令是proxy_pass。找到你的Nginx配置文件(我的是/opt/nginx/conf/nginx.conf文件),在
server節點里加上類似如下的語句:
location ^~ /blog { proxy_pass http://127.0.0.1:3000/blog; } location ^~ /photo { proxy_pass http://127.0.0.1:3001/photo; } |
像如上配置好之后,服務器就會將帶有/blog后綴的URL(如www.xxx.com/blog)反向代理到http://127.0.0.1:3000/blog應用上,將帶有/photo后綴的URL(如www.xxx.com/photo)反向代理到http://127.0.0.1:3001/photo應用上,簡單的實現一個域名綁定多個Web應用。
反向代理功能強大,它可以將遠程服務器映射到本地服務器的URL空間,而這里是對反向代理的一個簡單應用,也是初次試用,如有理解或使用不正確之處,歡迎批評指出!^_^
總的來說,通過反向代理,實現自定義二級目錄在統一域名下訪問不同的Web應用。好處是能夠統一訪問管理,還能共用OpenID等公用資源。但也需要做一些額外的操作,如對你的應用進行統一的route設置,使得應用的URL都帶一個統一后綴,并需要解決靜態資源文件加載的問題,否則會出現樣式和圖片的丟失!