位于 NGINX 代理后面的子路径上的 GeoServer

问题描述

我有一个安装了 Nginxwordpress 和 GeoServer(部署在 Tomcat 上)的 Ubuntu 20.04 LTS 服务器。 我希望在 URL 根 foo.bar.com/ 上提供 wordpress 站点,并在子路径 foo.bar.com/geoserver 上提供 GeoServer。 wordpress 网站正在运行并显示foo.bar.com/ 上,但 GeoServer 在 foo.bar.com/geoserver 上无法正常运行,请参阅下面的屏幕截图。

geoserver screenshot

我有以下 Nginx 配置:

server {
  server_name foo.bar.com;
  root /var/www/site;

  index index.html index.htm index.PHP;

  location /geoserver/ {
    proxy_pass http://localhost:8080/geoserver/;
    proxy_pass_header Set-Cookie;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location / {
    #try_files $uri $uri/ =404;
    try_files $uri $uri/ /index.PHP$is_args$args;
  }

  location ~ \.PHP$ {
    include snippets/fastcgi-PHP.conf;
    fastcgi_pass unix:/var/run/PHP/PHP7.4-fpm.sock;
  }

  location ~ /\.ht {
    deny all;
  }
  location = /favicon.ico { log_not_found off; access_log off; }
  location = /robots.txt { log_not_found off; access_log off; allow all; }
  location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
    expires max;
    log_not_found off;
  }


  listen 443 ssl; # managed by Certbot
  ssl_certificate ***; # managed by Certbot
  ssl_certificate_key ***; # managed by Certbot
  include /etc/letsencrypt/options-ssl-Nginx.conf; # managed by Certbot
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
  if ($host = foo.bar.com) {
    return 301 https://$host$request_uri;
  } # managed by Certbot

  listen 80;
  server_name foo.bar.com;
  return 404; # managed by Certbot
}

我确实在 GeoServer 全局设置中设置了代理基本 URL,并且确实配置了 CSRF 保护符合 this document

我是否仍然缺少 Nginx 中的某些配置?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)