nginx 作为 wildfly 的 SSL 反向代理

nginx 作为 wildfly 的 SSL 反向代理

我正在尝试设置 nginx 作为 wildfly 8.0.0.Final 的反向代理。

我的 HTTPS 重定向配置文件的一部分:

location /console {
  include          conf.d/proxy.conf;
  proxy_pass       http://127.0.0.1:9990/console;
  proxy_redirect   http://127.0.0.1:9990/console  https://X.Y.W.Z/console;
}
 ... similar location for...
/management
/logout
/error
... 

location / {
  include          conf.d/proxy.conf;
  proxy_pass       http://127.0.0.1:8080/;
}

代理服务器配置文件(proxy.conf):

proxy_set_header        Host            $host;
proxy_set_header        X-Forwarded-Proto $scheme;
add_header              Front-End-Https   on;

问题是 - 当我登录到/console 时收到错误消息:

拒绝访问: 权限不足,无法访问该接口。

我甚至不知道是什么原因造成的。任何帮助都非常感谢!

答案1

Marko,可能太晚了,但我能够按照你的配置让 nginx 和 wildfly 工作,让我分享一下:

在 proxy_headers.conf 中:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Front-End-Https on;

在我的 app.conf 中

location / {
   include conf.d/proxy_headers.conf;
   proxy_pass http://127.0.0.1:8080;
}

location /management {
   include conf.d/proxy_headers.conf;
   proxy_pass http://127.0.0.1:9990/management;
}

location /console {
   include conf.d/proxy_headers.conf;
   proxy_pass http://127.0.0.1:9990/console;
}

location /logout {
   include conf.d/proxy_headers.conf;
   proxy_pass http://127.0.0.1:9990/logout;
}

location /error {
   include conf.d/proxy_headers.conf;
   proxy_pass http://127.0.0.1:9990;
}

在我这样做之前,我遇到了与您相同的错误,因此使用 Chrome 中的开发人员工具,我发现对 /management 和其他路径的 ajax 请求已经完成,所以我处理了它们。

答案2

尝试在服务器配置中添加此项:

add_header Cache-Control "no-cache, no-store";

答案3

可能有点晚了,但这些信息可能会有帮助。

我在使用前端 Nginx 代理(无 SSL)和 Docker 中的 WildFly 8.2.0.Final 时遇到了同样的问题。尝试通过 Nginx 访问管理控制台时出现同样的错误。

发现 WildFly 需要 HOST:PORT 形式的 Host 标头(通过比较通过 tcpdump 捕获并在 Wireshark 中进行分析的数据包中的标头)。

这是我的配置,希望对大家有帮助:

upstream app-debug {
  ip_hash;
  server AA.BB.CC.DD:32862 max_fails=3 fail_timeout=20 weight=1;
}

server {
  listen 9990 default_server;
  location / {
    proxy_pass http://app-debug;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $server_addr:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
  }
}

希望这可以帮助。

相关内容