- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个使用 Cloudflare 来保护和代理网站的网站。
我在我的原始 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 通过我的站点公共(public) 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 一起为页面提供服务。
所以我的实际问题是,我怎样才能使用 Nginx 反向代理将基于 Jetty 的 Xwiki 服务加载到我的 Cloudflare 代理网站中的某个位置,或者你能帮我理解我哪里出了问题......
我怀疑我还需要在 Jetty 服务器上安装我的 nginx 服务器上安装的 SSL 证书,以便 nginx 将 Jetty 服务器视为本地资源 - 但我对此非常不确定......
最佳答案
正如我在最初的问题中提到的,我希望 xwiki 重定向/代理的工作方式与节点重定向的工作方式相同......
我挠头想知道为什么这不起作用,所以我玩了一把......
我发现他们转发请求的方式可能有问题,所以我删除了下面这行
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;
}
我按照上面的方法在我的 nginx 配置文件中创建了一个新的“测试”位置,并将其指向运行 Jetty 的外部 IP 和 8080 端口......结果,我在我的 https://SITE-NAME/test
`url 表示未找到“测试”位置,这意味着 nginx 反向代理正在按需工作...
虽然如果我重命名为 nginx.conf 文件中的位置设置,我可能不需要这样做,但我通过阅读 Jetty 文档发现我可以更改基于 war 的应用程序将在 Jetty 上运行的 URL重命名 Jetty home 的 webapp 目录中的 war 文件。
我将 war 文件名从 xwiki 更改为 test 并重新启动 Jetty 并在我的浏览器中加载我的 https://SITE-NAME/test
...
嘿-presto,我的网站现在通过 nginx 在我的 https://SITE-NAME/test
url 上使用 HTTPS 为来自 Jetty 的代理 Xwiki 应用程序提供服务...
我已经更改了 war 文件的名称和 nginx 文件中的位置,以指向类似 https://SITE-NAME/test
的内容,它非常有效!
然后我更改了 nginx.conf 中的 https://EXTERNAL-REAL-IP/test
位置以使用 nginx LAN IP,以便 Nginx 可以在本地代理并且这仍然可以根据需要工作 - 所以,总而言之,快乐的日子......
关于ssl - Nginx 通过 Cloudflare 反向代理到 Jetty 应用服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46255443/
我能否获得一个具有两个参数的递归Prolog谓词,称为反向,它返回列表的反向: 示例查询和预期结果: α-反向([a,b,c],L)。 L = [c,b,a]。 由两个称为palindrome的参数组
在使用 get_dummies() 将分类数据转换为数字数据后,我的数据框看起来像这样 score1 score2 country_CN country _AU category_leader ca
我有一张 table ,上面有一个国家/地区列表。说这些国家之一是“马其顿” 如果搜索“马其顿共和国”,什么 SQL 查询会返回“马其顿”记录? 我相信在 linq 中它会是这样的 var count
我们有一个角色继承结构,它假设每个人都默认获得最低级别的角色,而不是最高级别的过滤,如下图所示: role.Everyone //lowest level; everyone gets this ro
我正在使用 $.each() 解析数组,但在其中,我使用 .splice() 方法,因此我需要向后迭代。这可能吗? var store = [...]; //... var rules = [...]
我有一个 SPLObjectStorage 对象,其中 Player 对象作为键,分数作为与之关联的信息。玩家对象按照从最高分到最低分的顺序添加到存储中,但我现在需要以相反的顺序遍历它们。 我还需要能
我无法理解这一点:如果我给 Prolog reverse([], A). 它工作得很好,如果我给它 reverse(A, [] ). 并根据第一个建议回答 ; 它挂起!为什么? (GNU Prolog
我有一个 SPLObjectStorage 对象,其中 Player 对象作为键,分数作为与之关联的信息。玩家对象按照从最高分到最低分的顺序添加到存储中,但我现在需要以相反的顺序遍历它们。 我还需要能
我有一个HashMap看起来像: HashMap playerHashMap = new HashMap<>(); 玩家是包含姓名、号码、年龄等的对象。 现在我已经对它进行了排序,它看起来像这样: k
我有这个: file://localhost/Volumes/Untitled%20RAID%20Set%201/Callum/iTunes/Music/Steppenwolf/Steppenwolf
我正在使用 std::regex 并希望找到与某个用户定义的正则表达式字符串匹配的字符串中的最后一个位置。 例如,给定正则表达式 :.* 和字符串“test:55:last”,我想找到“:last”,
有一个表 ServErog(服务),它被重新引导到 4 个表 ServA、ServB、ServC、ServD(它们是不同的非统一服务),其中包含 servtype(服务类型)和 type_id(来自其
这个问题在这里已经有了答案: What is the best way to convert date from JavaScript string in format YYYYMMDD to Ja
我知道如何获得包含几个词的所有结果: SELECT * FROM `table` WHERE MATCH (`row`) AGAINST ('+word1 +word2' IN BOOLEAN MOD
你好,我有这个 html 代码: .container{ width: 450; height: 400; border:1px solid
我想知道是否有任何方法可以使用相同的 CSS 过渡实例来将其向前移动然后向后/向后移动。例如,假设我有这种转变: @-webkit-keyframes fade-transition { fr
假设我有这些字符串: char ref[30] = "1234567891234567891"; char oth[30] = "1234567891234567891"; 我想在 C++ 中使用 S
所以我有这段代码,它使 xcode 崩溃 void strrev(const std::string& str) { for(size_t i=str.length();i>=0;i--)
我正在使用下面的代码使每张图片 1 对 1 淡入淡出。我怎样才能反向执行此操作以使图片以相反的顺序加载? img {display:none;} $('img').each(function(
我正在尝试弄清楚如何改变 FrameLayout 堆叠其子项的方式。 目前它是最新的(先进先出)。我想更改它,使最新的 child 位于底部(FILO)。我试着查看 FrameLayout 的源代码,
我是一名优秀的程序员,十分优秀!