我有一個網站使用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證書 - 但我對這個非常不確定...