我正在尝试构建一个网站,该网站可以从与网站位于同一 DigitalOcean droplet 上的 GeoServer 实例访问 WMS 服务。该 droplet 是一台 Ubuntu 18.04 服务器,带有 - tomcat8 - postgresql-10 - openjdk-8-jdk-headless - nginx
我从 Web 存档部署了 GeoServer,如果我从本地计算机使用 ssh 连接并将 droplets 8080 端口映射到本地计算机上的端口 63334,我可以从http://本地主机:63334/bcp_geoserver/网页/我还可以在简单的 Leaflet 地图中使用 WMS 服务http://本地主机:63334/bcp_geoserver/LCFP/wms作为本地计算机上 HTML 文件中的地址。因此 GeoServer 似乎运行正常。
但是,如果我将 HTML 文件中的地址更改为http://本地主机:8080/bcp_geoserver/LCFP/wms并将其上传到 droplet 上的 nginx 网站根文件夹,如果我尝试通过互联网访问该网站,我会收到 wms 服务的连接被拒绝错误。我认为这是因为我没有为该网站配置正确的 Nginx。有没有办法配置 Nginx 以便该网站可以使用 WMS 服务?
这是我当前针对该网站的 Nginx 配置:
server {
listen 80;
server_name foo.bar;
root /var/www/foo.bar/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
location /bcp_geoserver {
proxy_pass http://localhost:8080/bcp_geoserver;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
我没有部署防火墙,并且在子域上(也在localhost:8080)有另一个tomcat webapp,并且Nginx使用proxy_pass正确地为其提供服务。
答案1
我无法弄清楚确切的问题是什么(是 Nginx,还是与同一端口上的其他 Web 应用程序冲突,还是其他原因),所以我改变了方向。我安装了另一个 tomcat 副本,并将其设置为使用不同于默认端口的端口,如下所示:https://linoxide.com/ubuntu-how-to/install-tomcat-8-ubuntu-16-04-multiple-instances/
然后我添加了一个指向我的 droplet IP 的新子域名:gs.foo.bar
然后,我将 Geoserver.war 部署到新 tomcat 实例中的 ROOT,方法是将其重命名为 ROOT.war,然后将其放入 webapps 文件夹。
然后我为该网站创建了以下 Nginx 配置:
server {
client_max_body_size 100m;
server_name gs.foo.bar;
location / {
proxy_pass http://127.0.0.1:8081;
}
然后对于我使用的 html 文件中的 wms 服务的地址http://gs.foo.bar/LCFP/wms。成功了。但是这会将 Geoserver webapp 暴露给互联网,所以我更改了默认的管理员密码。