【发布时间】:2017-09-16 15:23:55
【问题描述】:
我有一个使用 Cloudflare 保护和代理该网站的网站。
我在我的原始 nginx 网络服务器上使用 Cloudflare SSL 证书,以便通过 HTTPS 处理所有请求,这可以根据需要进行。
我已经设置了一个 Node.js 服务器和一个基于 Jetty 的应用程序服务器,该服务器在托管我的 Nginx 网络服务器的同一物理服务器上运行 Xwiki。
我通过我的 nginx.conf 文件设置了 nginx 反向代理,以便 nginx 在请求相应的 URL 时指向相应的“应用程序”服务器,例如
https://SITE-ROOT/node
使用我的 nginx.conf 文件中的以下位置设置,这反向代理到我在本地主机上的端口 3001 上运行的 node.js 服务器...
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 页面是通过 HTTPS 通过我的网站公共 URL 和 CloudFlares 服务提供的。
当我尝试对在端口 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 为页面提供服务。
所以我的实际问题是,我怎样才能让基于 Jetty 的 Xwiki 服务使用 Nginx 反向代理加载到我的 Cloudflare 代理网站中的某个位置,或者你能帮我了解我哪里出了问题...
我怀疑我需要在 Jetty 服务器上安装安装在我的 nginx 服务器上的 SSL 证书,以便 nginx 将 Jetty 服务器视为本地资源 - 但我对此非常不确定......
【问题讨论】:
标签: ssl cloudflare nginx-location jetty-9 nginx-reverse-proxy