![nginx 作为 wildfly 的 SSL 反向代理](https://linux22.com/image/633339/nginx%20%E4%BD%9C%E4%B8%BA%20wildfly%20%E7%9A%84%20SSL%20%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86.png)
我正在尝试设置 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;
}
}
希望这可以帮助。