从 OpenLayer 3 访问 Geoserver 得到“500(内部服务器错误)”

Posted

技术标签:

【中文标题】从 OpenLayer 3 访问 Geoserver 得到“500(内部服务器错误)”【英文标题】:Access Geoserver from OpenLayer 3 get '500 (Internal Server Error)' 【发布时间】:2019-10-16 17:56:33 【问题描述】:

我正在尝试使用以下 javascript 代码访问 Geoserver 层

  var gkvrtWmsSource =new ol.source.ImageWMS(
            url:'http://geoserver-host-ip/geoserver/ukrforest/wms',
            params: 'LAYERS':'kvartal_polygon',
            serverType:'geoserver',
            crossOrigin: 'anonymous',
        );

  var gkvrtWmsLayer=new ol.layer.Image(
            source:gkvrtWmsSource
        );

  var map = new ol.Map(
    layers: [
            new ol.layer.Tile(
                        source: new ol.source.OSM()
                    ),
            gkvrtWmsLayer,
            ],
    target: 'map1',
    view: new ol.View(
      center: ol.proj.transform([31, 50], 'EPSG:4326', 'EPSG:3857'),
      zoom: 10
    ),
);

Geoserver 在 Ubuntu 16.04 和 Apache 2.4.18 (Tomcat7) 上配置 根据post https://***.com/questions/25490051/access-geoserver-from-internet-ubuntu-server-14-04-1 在文件 etc/apache2/sites-available/000-default.conf 中添加了以下说明

ProxyRequests Off 
ProxyPreserveHost On 
<Proxy *>
        Order deny,allow 
        Allow from all
</Proxy> 
ProxyPass /geoserver "http://localhost:8080/geoserver" 
ProxyPassReverse /geoserver "http://localhost:8080/geoserver"

然后启用 4 个模块以在 Ubuntu 16.04 上通过 mod_proxy 使用 Apache 作为反向代理

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests

重启 Apache

仍然,在客户端有以下消息

wms:1 GET http://geoserver-host-ip/geoserver/ukrforest/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=kvartal_polygon&CRS=EPSG%3A3857&STYLES=&WIDTH=444&HEIGHT=881&BBOX=3245143.983882646%2C6312336.14137978%2C3516648.308351592%2C6851064.316733702 403 (Forbidden)

我做错了什么?

【问题讨论】:

直接连接8080端口是否有效?如果是这样,那么你有一个 apache 问题,应该检查该日志 没有。我将 ProxyPass /geoserver "localhost:8080/geoserver" 放入 etc/apache2/sites-available/000-default.conf 其实我的意思是写wms(网络地图服务) 【参考方案1】:

实际上,我在重新安装 Geoserver 后设法访问了 Geoserver 图层。 因此,如果有人要使用 Geoserver 通过 Openlayers 发布地图图层,我的问题的细节可能会被考虑在内。特别是如果出现跨域资源共享(CORS)的问题。

【讨论】:

以上是关于从 OpenLayer 3 访问 Geoserver 得到“500(内部服务器错误)”的主要内容,如果未能解决你的问题,请参考以下文章

vue openlayer聚合是啥意思

openlayer 的用法

openlayer-ol3中坐标系转换

如何在 iPhone 中放大 OpenLayer 地图?

openlayer-ol3中使用 echarts3

带有地理服务器的 openlayer 3