我有一个使用 Cloudflare 保护和代理该网站的网站。
我在我的原始 nginx 网络服务器上使用 Cloudflare SSL 证书,以便所有请求都通过 HTTPS 处理,这可以根据需要工作。
我已经设置了一个 Node.js 服务器和一个基于 Jetty 的应用程序服务器,在托管我的 Nginx 网络服务器的同一物理服务器上运行 Xwiki。
我通过我的 nginx.conf 文件设置了 nginx 反向代理,以便 nginx 在请求相应的 URL 时指向相应的“应用程序”服务器,例如
https://SITE-ROOT/node
这个反向代理到我的 node.js 服务器在本地主机上的端口 3001 上运行,使用我的 nginx.conf 文件中的以下位置设置...
location /node {
proxy_pass http://192.168.1.69:3001;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
这可以根据需要工作,并且 node.js 页面通过我的站点公共 URL 和 CloudFlares 服务通过 HTTPS 提供。
当我尝试对在端口 8080 上 localhost 上的 Jetty (Java) 应用程序服务器上运行的 Xwiki 站点执行相同操作时,例如
https://SITE-ROOT/xwiki
location /xwiki/ {
proxy_pass http://192.168.1.69:8080/xwiki;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
我收到以下错误:
DNS points to prohibited IP
Unfortunately, it is resolving to an IP address that
is creating a conflict within Cloudflare's system.
我不明白为什么会发生这种情况,因为我希望节点反向代理请求也会发生同样的事情。
我能想到的唯一区别是 Xwiki 与 nginx 和节点服务在同一主机上的 Jetty 应用程序服务器中运行,这意味着 nginx 和 Jetty 不能/不能以与 nginx 和节点相同的方式握手当涉及到反向代理...
如果我将我的站点真实 IP 地址和 Xwiki 端口号放在我的 nginx.conf 文件的代理重定向部分,例如
https://SITE-ROOT/xwiki
location /xwiki/ {
proxy_pass http://EXTERNAL-REAL-IP:8080/xwiki;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
这与 Xwiki 默认页面加载一样多,但 URL 更改为我服务器的真实外部 IP,并且不使用 SSL。我知道这是因为 Jetty 服务器通过端口 8080 并完全通过 nginx 为页面提供服务。
所以我的实际问题是,如何使用 Nginx 反向代理将基于 Jetty 的 Xwiki 服务加载到我的 Cloudflare 代理网站中的某个位置,或者你能帮助我了解我哪里出了问题......
我怀疑我需要在 Jetty 服务器上安装安装在我的 nginx 服务器上的 SSL 证书,以便 nginx 将 Jetty 服务器视为本地资源 - 但我对此非常不确定......