一、适用场景
常用的场景如下:
- 访问代理:在一个C机器上部署了Web应用程序,目前B<->C节点可以相互访问,本地A<->B也可以相互访问,但本地A不能直接访问C,故现在想通过A访问C上的Web App(比如我在B服务器上用vmvare创建了一个虚拟机C,B与C通过NAT连接,想通过我的笔记本A访问C,直接访问不了,只能通过B转接一下)
- 同域名段访问动、静态网站:apache挂了一个静态网站,比如叫top.cc,想通过top.cc的一个二级域名比如叫img.top.cc访问tomcat下的webapp
- 限制恶意域名解析:VPS的IP被恶意域名解析,如何显示恶意域名访问
- 多域名绑定:一个VPS如何配置多个域名,不同域名访问不同的VPS目录
以上场景都可以通过简单修改Apache配置文件httpd.conf来解决。
二、配置方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
vim /etc/httpd/conf/httpd.conf #xx.xx.xx.xx为vps的IP NameVirtualHost xx.xx.xx.xx:80 # 这是最初绑定的域名,需要配置好DNS域名解析 <VirtualHost xx.xx.xx.xx:80> ServerName top.cc ServerAlias www.top.cc DocumentRoot /var/www/html/ </VirtualHost> # 二级域名访问不同目录配置,需要配置好DNS域名解析 <VirtualHost xx.xx.xx.xx:80> DocumentRoot /var/www/html/image/ ServerName img.top.cc </VirtualHost> # 其他域名的绑定,需要配置好DNS域名解析 <VirtualHost xx.xx.xx.xx:80> DocumentRoot /var/www/html/another/ ServerName another.site ServerAlias www.another.site </VirtualHost> # 限制恶意解析,默认我们的IP已经被坏蛋域名解析啦 # 让它访问一个根本不存在的目录,没有权限访问就会出404错误 <VirtualHost xx.xx.xx.xx:80> DocumentRoot /NULL ServerName bad.site ServerAlias www.bad.site </VirtualHost> #反向代理配置 # 取消以下模块注释(即去掉前面的#) # 高版本可能在/etc/httpd/conf.modules.d/00-proxy.conf中 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so #设置需要访问的动态app访问地址,这里是cc.cc.cc.cc:8080 <VirtualHost xx.xx.xx.xx:80> DocumentRoot /var/www/html/image/ ServerName dev.top.cc ProxyPass / http://cc.cc.cc:8080/ ProxyPassReverse / http://cc.cc.cc.cc:8080/ </VirtualHost> ProxyRequests On |
配置完成后重启apache生效
1 |
# service httpd restart |
访问链接检验一下:
http://top.cc
http://img.top.cc
http://another.site
http://bad.site
http://dev.top.cc
^_^ ^_^ ^_^
code
more code
~~~~