nginx实现多geoserver服务的负载均衡的示例代码

 更新时间:2022年05月13日 14:23:07   作者:牛老师讲GIS  
本文主要介绍了nginx实现多geoserver服务的负载均衡的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

概述

为了提高服务的访问速度,减轻geoserver服务的压力,同时避免服务节点出现问题而影响服务访问的稳定性,我们通常会通过部署多个geoserver来解决,但是部署了多个geoserver后,我们需要一个统一的接口提供出来供使用,nginx很好地可以这样的需求,本文讲讲如何通过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中的调用代码如下:

<!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: 'http://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负载均衡内容请搜索得牛网以前的文章或继续浏览下面的相关文章希望大家以后多多支持得牛网!

相关文章

  • Mac M1 Nginx 配置多站点的实现

    Mac M1 Nginx 配置多站点的实现

    这篇文章主要介绍了Mac M1 Nginx 配置多站点的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Nginx服务器中location配置的一些基本要点解析

    Nginx服务器中location配置的一些基本要点解析

    这篇文章主要介绍了Nginx服务器中location配置的一些基本要点解析,特别对管理以及查找匹配作出了详细的讲解,需要的朋友可以参考下
    2015-12-12
  • PHP开发框架kohana3.3.1在nginx下的伪静态设置例子

    PHP开发框架kohana3.3.1在nginx下的伪静态设置例子

    这篇文章主要介绍了PHP开发框架kohana3.3.1在nginx下的伪静态设置例子,kohana曾经是codeigniter框架的衍生版,后来发展成另一个独立的PHP5开发框架,需要的朋友可以参考下
    2014-07-07
  • Nginx(Tengine)启用 SPDY 支持的配置方法

    Nginx(Tengine)启用 SPDY 支持的配置方法

    当老迈的 HTTP 协议逐渐不能满足人们需求的时候,Google 的 SPDY 协议出现在面前,那么这个长期以来一直被认为是 HTTP 2.0 唯一可行选择的 SPDY 是什么呢?当下我们如何能部署上 SPDY 呢
    2014-12-12
  • 基于Nginx的衍生版服务器Tengine简介

    基于Nginx的衍生版服务器Tengine简介

    这篇文章主要介绍了基于Nginx的衍生版服务器Tengine简介,本文讲解了Nginx的特性、Tengine的特性、架构和扩展性等内容,需要的朋友可以参考下
    2015-03-03
  • nginx 多站点配置方法集合

    nginx 多站点配置方法集合

    关于nginx的多站设置,其实和apache很相似,假设我们已经有两个域名,分别是:www.websuitA.com和www.websuitB.com。并且这两个域名已经映射给了IP为192.168.1.1的服务器。
    2011-06-06
  • Nginx正向反向代理区别及原理解析

    Nginx正向反向代理区别及原理解析

    这篇文章主要介绍了Nginx正向反向代理区别及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Nginx 禁止访问某个目录或文件的设置方法

    Nginx 禁止访问某个目录或文件的设置方法

    如果基于WEB根目录下,要禁止用户访问/config目录,或者要禁止用户访问/config.ini(ZF常用INI,不过建议还是放到WEB目录以外的地方),可以通过location进行配置,返回403或者404等
    2010-09-09
  • 一文搞懂Nginx限流(简单实现)

    一文搞懂Nginx限流(简单实现)

    这篇文章主要介绍了一文搞懂Nginx限流(简单实现),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Nginx配置基于多域名、端口、IP的虚拟主机

    Nginx配置基于多域名、端口、IP的虚拟主机

    这篇文章主要介绍了Nginx配置基于多域名、端口、IP的虚拟主机,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11

最新评论