仙人抚顶

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

      在对外提供WEB页面服务时,提供的域名通常需要隐藏端口号和项目名,例如像www.baidu.com。隐藏端口容易处理,将WEB容器的端口号修改为80即可满足。如果要隐藏项目的名称,在tomcat下,可以通过在server.xml中加入以下语句,在不输入项目名的情况下,自动进入www.abc.com/websit对应的web服务。

<Context path="" docBase="/usr/local/tomcat/webapps/website" />

      另外如果想在一台服务器上部署多个WEB服务,也可以采用这种方式,并结合tomcat虚拟主机配置实现。

  虚拟主机在本文中不再赘述,这里要讲是使用nginx来实现该功能。

      这种场景下的解决方案是利用nginx的反向代理功能,通过配置nginx,可以将访问80端口、单域名不同的请求映射到WEB容器上不同的项目上,甚至WEB容器的端口号都可以不设置为80,因为常常nginx和WEB容器部署到同一台服务器上,这是80端口必须分配给nginx才能监听到不到端口域名的访问。nginx的配置内容如下所示:

server {
    listen       80;
        server_name  www.aaa.con aaa.con;
        location / {
         proxy_pass   http://www.aaa.con:8087/proj1/;
        }
     location /proj1/ {
  proxy_pass http://www.aaa.con:8087/proj1/;
    }
}
server {
  listen 80;
  server_name www.bbb.con bbb.con;
  location / {
    proxy_pass http://www.aaa.con:8087/proj2/;
  }

  location /proj2/ {
    proxy_pass http://www.aaa.con:8087/proj2/;
  }
}

      这段配置的意思是访问www.aaa.com或者aaa.com的请求,会被nginx映射到http://www.aaa.con:8087/proj1/;而访问www.bbb.com或者bbb.com的请求,会被映射到http://www.aaa.con:8087/proj2/。多配置location /proj1/的原因是避免CSS/JS等在html中设置了项目名路径的资源因为nginx的反向代理造成丢失工程名而无法访问到资源。

      这样,我们就能够在一台机器上发布针对若干个域名的WEB服务了。

posted on 2016-06-08 16:37  仙人抚顶  阅读(12158)  评论(0编辑  收藏  举报