nginx怎么實現多geoserver服務的負載均衡

概述

為了提高服務的訪問速度,減輕geoserver服務的壓力,同時避免服務節點出現問題而影響服務訪問的穩定性,我們通常會通過部署多個geoserver來解決,但是部署了多個geoserver后,我們需要一個統一的接口提供出來供使用,nginx很好地可以這樣的需求,本文講講如何通過nginx實現多geoserver服務的負載均衡

實現效果

nginx怎么實現多geoserver服務的負載均衡

實現

1. 多geoserver部署

為了保持geoserver的服務一致,我們先配置好一個geoserver服務,配置好之后將部署的tomcat復制,克隆多個出來,本文為演示復制了兩個(共三個geoserver),修改Tomcat的端口,使三個端口不沖突,復制好之后分別啟動三個Tomcat。

2. nginx配置

修改nginx.conf文件,配置信息如下:

#user??nobody; worker_processes??1;  #error_log??logs/error.log; #error_log??logs/error.log??notice; #error_log??logs/error.log??info;  #pid????????logs/nginx.pid;   events?{ ????worker_connections??1024; }   http?{ ????include???????mime.types; ????default_type??application/octet-stream;  ????#log_format??main??'$remote_addr?-?$remote_user?[$time_local]?"$request"?' ????#??????????????????'$status?$body_bytes_sent?"$http_referer"?' ????#??????????????????'"$http_user_agent"?"$http_x_forwarded_for"';  ????#access_log??logs/access.log??main;  ????sendfile????????on; ????#tcp_nopush?????on;  ????#keepalive_timeout??0; ????keepalive_timeout??65;  ????#gzip??on; ???? ????#?反向代理配置 ????upstream?server_list{ ???????#?這個是tomcat的訪問路徑 ???????server?localhost:8081; ???????server?localhost:8082; ???????server?localhost:8083; ????} ????server?{ ????????listen???????80; ????????server_name??localhost; ????? ????????location?/?{ ????????????add_header?'Access-Control-Allow-Origin'?$http_origin; ????????????add_header?'Access-Control-Allow-Credentials'?'true'; ????????????add_header?'Access-Control-Allow-Methods'?'GET,?POST,?OPTIONS'; ????????????add_header?'Access-Control-Allow-Headers'?'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; ????????????add_header?'Access-Control-Expose-Headers'?'Content-Length,Content-Range'; ????????????if?($request_method?=?'OPTIONS')?{ ????????????????add_header?'Access-Control-Max-Age'?1728000; ????????????????add_header?'Content-Type'?'text/plain;?charset=utf-8'; ????????????????add_header?'Content-Length'?0; ????????????????return?204; ????????????} ????????????root???html; ????????????proxy_pass?http://server_list; ????????????index??index.html?index.htm; ????????} ???????? ????????error_page???500?502?503?504??/50x.html; ????????location?=?/50x.html?{ ????????????root???html; ????????} ????} }

配置好nginx后,啟動nginx。

3. 前端調用

根據上述的配置,nginx的端口為80,因此geoserver的地址為http://localhost/geoserver,在ol中的調用代碼如下:

nbsp;html&gt;   ??<meta> ??<title>OpenLayers?map?preview</title> ??<link> ??<link> ??<script></script><div></div> <script>   const options = {     center: [52102781.07568731, 4456849.777083951],     zoom: 3,     minZoom: 0,     maxZoom: 18   }    const base = new ol.layer.Tile({     visible: true,     source: new ol.source.OSM()   });   const wms = new ol.layer.Tile({     source: new ol.source.TileWMS({       url: &#39;http://localhost/geoserver/mapbox/wms&#39;,       params: {&#39;LAYERS&#39;: &#39;mapbox:city&#39;, &#39;TILED&#39;: true},       serverType: &#39;geoserver&#39;,       transition: 0     })   })    window.map = new ol.Map({     controls: ol.control.defaults({       attribution: false     }).extend([new ol.control.ScaleLine()]),     target: &#39;map&#39;,     layers: [base, wms],     view: new ol.View({       center: options.center,       zoom: options.zoom,       minZoom: options.minZoom,       maxZoom: options.maxZoom     })   }); </script>

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享