サービスのアクセス速度を向上させ、ジオサーバー サービスへの負荷を軽減し、サービス アクセスの安定性に影響を与えるサービス ノードの問題を回避するために、通常は、複数の geoserver がデプロイされている 複数の geoserver をインストールした後は、使用するための統一されたインターフェイスが必要です。nginx はこの要件を十分に満たすことができます。この記事では、nginx を通じて複数の geoserver サービスの負荷分散を実現する方法について説明します。
ジオサーバー サービスの一貫性を保つために、最初に geoserver サービスを構成します。構成後、デプロイされた Tomcat をコピーし、複数の Tomcat を複製します。この記事では、デモンストレーション用に 2 つ (合計 3 つの geoserver) をコピーしました。3 つのポートが競合しないように Tomcat ポートを変更します。コピー後、それぞれを開始します3匹のトムキャット。
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 を起動します。
上記の設定によると、nginx のポートは 80 なので、geoserver のアドレスは http://localhost/geoserver になります。は次のとおりです:
<!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 サービスの負荷分散を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。