我有一个使用CloudFlare保护和代理网站的网站。
我在我的Origin Nginx Web服务器上使用CloudFlare SSL证书,以便通过HTTPS处理所有请求,并且可以根据需要进行工作。
我已经设置了一个node.js服务器和基于码头的应用程序服务器在同一物理服务器上运行xwiki与托管我的nginx Web服务器。
我通过我的nginx.conf文件设置nginx反向代理,以便当请求相应的URL时,Nginx指向相应的"应用程序"服务器,例如
https://SITE-ROOT/node
使用我的nginx.conf文件中的以下位置设置在localhost上运行的我的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;
}
此功能可根据需要工作,而节点。
当我尝试在port 8080上的Localhost上运行的Xwiki网站时,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和Node Services同一主机上的Jetty Application Server中运行,这意味着Nginx和Jetty不是/不能以相同的方式握手和节点可以反向代理...
如果我将网站放置在我的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。我知道这是因为码头服务器正在通过端口8080和通过Nginx完全通过。
。所以我的实际问题是,我如何使用Nginx反向代理在我的Cloudflare代理网站内的位置上加载基于码头的Xwiki服务,或者您能帮助我了解我在哪里出错... p>我怀疑我需要安装在Jetty服务器上安装的NGINX服务器上安装的SSL证书,以便Nginx See See的Jetty Server作为本地资源 - 但是我对此非常不确定...
正如我在我最初的问题中提到的那样,我期望xwiki redirect/代理的工作方式与节点重定向相同的方式工作...
我在挠头,想知道为什么这不起作用,所以我玩了...
我发现他们转发请求的方式可能存在问题,所以我删除了以下行
proxy_set_header X-Forwarded-Host $server_name;
并替换为:
proxy_set_header X-Forwarded-Proto https;
,nginx会照顾事物的SSL站点
location /test {
proxy_pass EXTERNAL-REAL-IP:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
}
我根据上述文件创建了一个新的"测试"位置,并将其指向外部IP和8080端口,Jetty正在运行...和BOOM,我在https://SITE-NAME/test
上获得了一个Jetty错误页面" url说找不到"测试"位置,这意味着Nginx反向代理正在根据需要工作...
尽管如果我重命名为nginx.conf文件中的位置设置,我可能不需要这样做在Jetty Home的WebApp目录中重命名战争文件。
我将战争文件名从xwiki更改为测试和重新启动码头,并将我的https://SITE-NAME/test
加载到浏览器中...
嘿,我的网站现在使用我的https://SITE-NAME/test
URL上的https从Jetty通过NGINX提供代理XWIKI应用程序...
我已将战争文件的名称和nginx文件中的位置更改为指向https://SITE-NAME/test
之类的东西,它就像魅力一样工作!
i然后更改了nginx.conf中的https://EXTERNAL-REAL-IP/test
位置以使用nginx lan ip,以便nginx可以在本地代理,并且仍然可以根据需要工作 - 因此,总而言之,快乐的日子...