我有一个网站使用Cloudflare来保护和代理网站。Nginx反向代理通过Cloudflare的Jetty应用服务器
我在我的原始nginx网络服务器上使用Cloudflare SSL证书,以便通过HTTPS处理所有请求,并根据需要进行处理。
我已经在托管我的Nginx网络服务器的同一物理服务器上设置了一个Node.js服务器和一个基于Jetty的应用服务器,它运行Xwiki。
我通过我的nginx.conf文件设置了nginx反向代理,以便当相应的URL被请求时,nginx指向各自的“应用”服务器。
https://SITE-ROOT/node
这个反向代理我的Node.js上使用我的nginx.conf文件下方位置设置本地主机端口3001上运行服务器...
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上本地主机上的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服务加载在我的Cloudflare代理网站内使用Nginx反向代理的位置,或者你能帮我明白我在哪里出错了...
我怀疑我需要安装安装Jetty服务器也让nginx的看到是Jetty服务器的本地资源在我的nginx服务器上的SSL证书 - 但我对这个非常不确定...