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