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



文章评论