工作种遇到这样的情况,要求按照地区部署不同的子站点,子站点有独立的域名。如果资源充足,一般的做法就是,不同域名绑定到不同的主机中。而实际上,在项目的初期,可能并没有这么多资源,这时候还想做这样的站点结构怎么办?

其实解决办法很简单,nginx只是多站点配置。而实际上我经历的一个项目中,甚至无需配置多个站点,只需应用级别做区分即可。

首先,修改dns,设置泛域名,*.example.com指向主机ip。

然后,修改nginx,在主机名处也是设定泛域名。例子如下


server {

listen 80;

server_name example.com  *.example.com;  ///监听所有域名

location ~ ^/(wap/|js/|templet/|do|api/)

{

proxy_redirect        off;

proxy_set_header    Host example.com;

proxy_pass      http://127.0.0.1:8080;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

location / 		{

root   /usr/local/www/***/***;

index index.jsp index.html index.htm;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

set $domain default;

 

if ( $http_host ~* "^(.*)\.example\.com$") {       //这里将不同的域名映射到不同的子站点(不同的模版,根据你的应用怎么区分站点而定)

set $domain $1; 												rewrite ^/(.*)   /templet/$domain/$1;

}

}

access_log off;

}

本例的系统架构是,linux+nginx+tomcat

1.00 平均分 (24%) - 8