У меня есть веб-сайт, который использует Cloudflare для защиты и проксирования сайта.
Я использую SSL-сертификат Cloudflare на исходном веб-сервере nginx, поэтому все запросы обрабатываются через HTTPS, и это работает по мере необходимости.
Я настроил сервер Node.js и сервер приложений на основе Jetty, на котором работает Xwiki, на том же физическом сервере, на котором размещен мой веб-сервер Nginx.
Я настроил обратное проксирование nginx через мой файл nginx.conf, чтобы nginx указывал на соответствующий сервер «приложений», когда запрашивается соответствующий URL-адрес, например.
https://SITE-ROOT/node
Этот обратный прокси к моему серверу node.js, работающему на порту 3001 на локальном хосте, с использованием следующих настроек местоположения в моем файле nginx.conf...
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.
Когда я пытаюсь сделать то же самое для сайта Xwiki, который работает на сервере приложений Jetty (Java) на локальном хосте через порт 8080, например.
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 работает на сервере приложений Jetty на том же хосте, что и службы nginx и node, и это означает, что nginx и Jetty не могут / не могут рукопожатие таким же образом, как nginx и node могут когда дело доходит до обратного проксирования...
Если я укажу реальный 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.
Итак, мой фактический вопрос: как я могу заставить службу Xwiki на основе Jetty загружаться в место на моем прокси-сайте Cloudflare с использованием обратного прокси-сервера Nginx, или вы можете помочь мне понять, где я ошибаюсь с этим...
Я подозреваю, что мне нужно установить сертификат SSL, который установлен на моем сервере nginx, на сервере Jetty, чтобы nginx видел сервер Jetty как локальный ресурс, но я очень не уверен в этом...