Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Bagaimana nginx melaksanakan pengimbangan beban berbilang perkhidmatan geoserver

Bagaimana nginx melaksanakan pengimbangan beban berbilang perkhidmatan geoserver

PHPz
PHPzke hadapan
2023-05-17 11:04:051378semak imbas

Ikhtisar

Untuk meningkatkan kelajuan akses perkhidmatan, mengurangkan tekanan pada perkhidmatan geoserver dan mengelakkan masalah dengan nod perkhidmatan yang menjejaskan kestabilan akses perkhidmatan, kami biasanya menyelesaikan masalah dengan menggunakan berbilang pelayan geo, tetapi menggunakan Selepas memasang berbilang pelayan geo, kami memerlukan antara muka yang disatukan untuk kegunaan nginx boleh memenuhi keperluan sedemikian dengan baik.

Kesan pelaksanaan

Bagaimana nginx melaksanakan pengimbangan beban berbilang perkhidmatan geoserver

Pelaksanaan

1.Pengerahan berbilang geoserver

Untuk memastikan perkhidmatan geoserver konsisten. , kami mula-mula Mengkonfigurasi perkhidmatan geoserver Selepas mengkonfigurasi, menyalin Tomcat yang digunakan dan mengklon berbilang yang Artikel ini menyalin dua (tiga geoserver secara keseluruhan) untuk demonstrasi supaya ketiga-tiga port tidak bercanggah Mulakan tiga Tomcats.

2. konfigurasi nginx

Ubah suai fail nginx.conf, maklumat konfigurasi adalah seperti berikut:

#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;
        }
    }
}

Selepas nginx dikonfigurasikan, mulakan nginx.

3. Panggilan hujung hadapan

Mengikut konfigurasi di atas, port nginx ialah 80, jadi alamat geoserver ialah http://localhost/geoserver adalah seperti berikut:

<!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: &#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>
</body>
</html>

Atas ialah kandungan terperinci Bagaimana nginx melaksanakan pengimbangan beban berbilang perkhidmatan geoserver. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam