gpt4 book ai didi

ssl - Nginx 通过 Cloudflare 反向代理到 Jetty 应用服务器

转载 作者:太空宇宙 更新时间:2023-11-03 14:37:38 25 4
gpt4 key购买 nike

我有一个使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com