概述
为了提高服务的访问速度,减轻geoserver服务的压力,同时避免服务节点出现问题而影响服务访问的稳定性,我们通常会通过部署多个geoserver来解决,但是部署了多个geoserver后,我们需要一个统一的接口提供出来供使用,nginx很好地可以这样的需求,数据库技术:nginx实现多geoserver服务的负载均衡的示例代码讲讲如何通过nginx实现多geoserver服务的负载均衡。
实现效果
实现
1. 多geoserver部署
为了保持geoserver的服务一致,我们先配置好一个geoserver服务,配置好之后将部署的tomcat复制,克隆多个出来,数据库技术:nginx实现多geoserver服务的负载均衡的示例代码为演示复制了两个(共三个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 https://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的地址为https://localhost/geoserver,在ol中的调用代码如下:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>openlayers map preview</title> <link rel="stylesheet" href="lib/ol/ol.css" rel="external nofollow" type="text/css"> <link rel="stylesheet" href="css/common.css" rel="external nofollow" > <script src="../ol5/ol.js" type="text/javascript"></script> </head> <body> <div id="map" class="map"></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: 'https://localhost/geoserver/mapbox/wms', params: {'layers': 'mapbox:city', 'tiled': true}, servertype: 'geoserver', transition: 0 }) }) window.map = new ol.map({ controls: ol.control.defaults({ attribution: false }).extend([new ol.control.scaleline()]), target: 'map', layers: [base, wms], view: new ol.view({ center: options.center, zoom: options.zoom, minzoom: options.minzoom, maxzoom: options.maxzoom }) }); </script> </body> </html>
到此这篇关于nginx实现多geoserver服务的负载均衡的示例代码的文章就介绍到这了,更多相关nginx 多geoserver负载均衡内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!
需要了解更多数据库技术:nginx实现多geoserver服务的负载均衡的示例代码,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/dtteaching/1093024.html