dynmap através de mod_proxy em um servidor externo

1

Minha configuração consiste em dois servidores, um para hospedagem de sites e outro para o trabalho pesado (por exemplo, Minecraft). Eu estou usando o Spigot para alimentar alguns plugins e um dos plugins é o dynmap (que é um mapa interativo para mostrar ao mundo e aos jogadores online). Mais informações sobre o dynmap estão aqui: link

De qualquer forma, eu quero usar um ReverseProxy no meu servidor web e Proxy o conteúdo do dynmap para que eu possa fechar algumas portas no roteador. Atualmente, acabei de fazer um encaminhamento de porta na porta 8123 para o meu servidor Minecraft.

No servidor web, estou atualmente executando o Apache 2.4 e instalei o mod_proxy e o mod_proxy_html. Eu também defini isso no arquivo vhost para HTTP e HTTPS:

ProxyRequests off
ProxyPass "/map" "http://192.168.2.31:8123/"
ProxyPassReverse "/map" "http://192.168.2.31:8123/"

Isso deve ser bastante auto-explicativo. Mas quando eu acessar a página [WEBSITE] / map eu sou saudado com uma página em branco. Eu estou recebendo isso embora:

<!DOCTYPE html>
<html lang="en">
<head>

    <title>Minecraft Dynamic Map</title>

    <meta charset="utf-8" />
    <meta name="keywords" content="minecraft, map, dynamic" />
    <meta name="description" content="Minecraft Dynamic Map" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
    <!-- These 2 lines make us fullscreen on apple mobile products - remove if you don't like that -->
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />   

    <link rel="icon" href="images/dynmap.ico" type="image/ico" />

    <script type="text/javascript" src="js/jquery-1.11.0.js?_=2.3-2074"></script>
    <link rel="stylesheet" type="text/css" href="css/leaflet.css?_=2.3-2074" />
    <script type="text/javascript" src="js/leaflet.js?_=2.3-2074"></script>

    <script type="text/javascript" src="js/custommarker.js?_=2.3-2074"></script>

    <script type="text/javascript" src="js/dynmaputils.js?_=2.3-2074"></script>

    <!--<link rel="stylesheet" type="text/css" href="css/embedded.css" media="screen" />-->
    <link rel="stylesheet" type="text/css" href="css/standalone.css?_=2.3-2074" media="screen" />
    <link rel="stylesheet" type="text/css" href="css/dynmap_style.css?_=2.3-2074" media="screen" />
    <!-- <link rel="stylesheet" type="text/css" href="css/override.css" media="screen" /> -->

    <script type="text/javascript" src="version.js?_=2.3-2074"></script>
    <script type="text/javascript" src="js/jquery.json.js?_=2.3-2074"></script>
    <script type="text/javascript" src="js/jquery.mousewheel.js?_=2.3-2074"></script>
    <script type="text/javascript" src="js/minecraft.js?_=2.3-2074"></script>
    <script type="text/javascript" src="js/map.js?_=2.3-2074"></script>
    <script type="text/javascript" src="js/hdmap.js?_=2.3-2074"></script>
    <script type="text/javascript" src="standalone/config.js?_=2.3-2074"></script>

    <script type="text/javascript">
            $(document).ready(function() {
                window.dynmap = new DynMap($.extend({
                    container: $('#mcmap')
                }, config));
            });
    </script>

</head>
<body>
<noscript>
 For full functionality of this site it is necessary to enable JavaScript.
 Here are the <a href="http://www.enable-javascript.com/" target="_blank">
 instructions how to enable JavaScript in your web browser</a>.
</noscript>

    <div id="mcmap"></div>
</body>
</html>

Eu também defini o servidor web como "proxy confiável" na configuração do dynmap. Então, meu palpite é que JavaScript ou fotos estão bloqueadas de alguma forma? mod_security não está instalado.

EDITAR

Os links aparecem como 404, devo adicionar sublinks no proxy

EDIT2

Tudobem,entãoadicioneiessaslinhasnaconfiguraçãodovhosteagoraestourecebendomuitomenoserros,issoéalgo.

ProxyRequestsoffProxyPass"/map"                "http://192.168.2.31:8123/"
    ProxyPass "/js"                 "http://192.168.2.31:8123/js/"
    ProxyPass "/js/minecraft"       "http://192.168.2.31:8123/js/minecraft/"
    ProxyPass "/js/map"             "http://192.168.2.31:8123/js/map/"
    ProxyPass "/css"                "http://192.168.2.31:8123/css/"
    ProxyPass "/standalone"         "http://192.168.2.31:8123/standalone/"

    ProxyPassReverse "/map"         "http://192.168.2.31:8123/"
    ProxyPassReverse "/js"          "http://192.168.2.31:8123/js/"
    ProxyPassReverse "/js/minecraft""http://192.168.2.31:8123/js/minecraft/"
    ProxyPassReverse "/js/map"      "http://192.168.2.31:8123/js/map/"
    ProxyPassReverse "/css"         "http://192.168.2.31:8123/css/"
    ProxyPassReverse "/standalone"  "http://192.168.2.31:8123/standalone/"

Eu ainda estou tentando descobrir por que os servidores não me enviam os arquivos .js que estão localizados em / (veja a figura)

EDIT3

Tudobem,issoébastanteestranho.Masseeuremoveraúltimabarrainvertidaassim,nãoestourecebendoum404noarquivo-jsnocatalog/standalone.

ProxyPass"/standalone"  "http://192.168.2.31:8123/standalone"
 ProxyPassReverse "/standalone"  "http://192.168.2.31:8123/standalone"

EDIT4

Tudobem,pelomenosalgunsprogressos.Editaressaslinhascomoeufiznaediçãoanteriormedeumuitomaisde404,masdestavezfoiapartirdaspeçaseimagens.Entãoissoébom.

ProxyPass"/up/configuration"   "http://192.168.2.31:8123/up/configuration"
 ProxyPassReverse "/up/configuration"   "http://192.168.2.31:8123/up/configuration"
    
por Orphans 25.08.2016 / 10:00

2 respostas

0

Tudo bem, depois de várias horas de tentativa e erro. E um monte de olhos diferentes que deram uma olhada finalmente cheguei a uma configuração que se parecia com isso:

    ProxyRequests off
    ProxyPass "/map"                "http://192.168.2.31:8123/"
    ProxyPass "/js"                 "http://192.168.2.31:8123/js/"
    ProxyPass "/js/minecraft"       "http://192.168.2.31:8123/js/minecraft/"
    ProxyPass "/js/map"             "http://192.168.2.31:8123/js/map/"
    ProxyPass "/css"                "http://192.168.2.31:8123/css/"
    ProxyPass "/standalone"         "http://192.168.2.31:8123/standalone"
    ProxyPass "/up/configuration"   "http://192.168.2.31:8123/up/configuration"
    ProxyPass "/version.js"         "http://192.168.2.31:8123/version.js"
    ProxyPass "/images"             "http://192.168.2.31:8123/images/"
    ProxyPass "/tiles/world/t"      "http://192.168.2.31:8123/tiles/world/t"
    ProxyPass "/tiles/world/t_day"  "http://192.168.2.31:8123/tiles/world/t_day"
    ProxyPass "/tiles/world_nether/nt"      "http://192.168.2.31:8123/tiles/world_nether/nt"
    ProxyPass "/tiles/world_nether/flat"      "http://192.168.2.31:8123/tiles/world_nether/flat"
    ProxyPass "/tiles/world_the_end/st"      "http://192.168.2.31:8123/tiles/world_the_end/st"
    ProxyPass "/up/world/world"     "http://192.168.2.31:8123/up/world/world"
    ProxyPass "/up/world/world_nether"     "http://192.168.2.31:8123/up/world/world_nether"
    ProxyPass "/up/world/world_the_end"     "http://192.168.2.31:8123/up/world/world_the_end"
    ProxyPass "/mapimages"          "http://192.168.2.31:8123/mapimages/"
    ProxyPass "/tiles/_markers_"    "http://192.168.2.31:8123/tiles/_markers_"
    ProxyPass "/tiles/faces/16x16"  "http://192.168.2.31:8123/tiles/faces/16x16"
    ProxyPass "/tiles/faces/32x32"  "http://192.168.2.31:8123/tiles/faces/32x32"

    ProxyPassReverse "/map"         "http://192.168.2.31:8123/"
    ProxyPassReverse "/js"          "http://192.168.2.31:8123/js/"
    ProxyPassReverse "/js/minecraft""http://192.168.2.31:8123/js/minecraft/"
    ProxyPassReverse "/js/map"      "http://192.168.2.31:8123/js/map/"
    ProxyPassReverse "/css"         "http://192.168.2.31:8123/css/"
    ProxyPassReverse "/standalone"  "http://192.168.2.31:8123/standalone"
    ProxyPassReverse "/up/configuration"            "http://192.168.2.31:8123/up/configuration"
    ProxyPassReverse "/version.js"  "http://192.168.2.31:8123/version.js"
    ProxyPassReverse "/images"             "http://192.168.2.31:8123/images/"
    ProxyPassReverse "/tiles/world/t"             "http://192.168.2.31:8123/tiles/world/t"
    ProxyPassReverse "/tiles/world/t_day"             "http://192.168.2.31:8123/tiles/world/t_day"
    ProxyPassReverse "/tiles/world_nether/nt"      "http://192.168.2.31:8123/tiles/world_nether/nt"
    ProxyPassReverse "/tiles/world_the_end/st"      "http://192.168.2.31:8123/tiles/world_the_end/st"
    ProxyPassReverse "/up/world/world"   "http://192.168.2.31:8123/up/world/world"
    ProxyPassReverse "/up/world/world_nether"     "http://192.168.2.31:8123/up/world/world_nether"
    ProxyPassReverse "/up/world/world_the_end"     "http://192.168.2.31:8123/up/world/world_the_end"
    ProxyPassReverse "/mapimages"          "http://192.168.2.31:8123/mapimages/"
    ProxyPassReverse "/tiles/_markers_"    "http://192.168.2.31:8123/tiles/_markers_"
    ProxyPassReverse "/tiles/faces/16x16"  "http://192.168.2.31:8123/tiles/faces/16x16"
    ProxyPassReverse "/tiles/faces/32x32"  "http://192.168.2.31:8123/tiles/faces/32x32"

Isso funciona (no meu caso), mas sei que tenho que redefinir todas as regras se houver uma alteração na estrutura do catálogo. Tudo funciona como deveria com esta configuração.

Apenas altere os nomes do mundo se você for diferente.

Também recomendo que qualquer leitor tente a sugestão "AnrDaemons"

    
por 26.08.2016 / 22:46
1

Você deve realmente verificar as regras de mapeamento de URI para solicitações de proxy. E, em geral, prefiro <Location> para lidar com conteúdo com proxy. Observe também a diretiva ProxyPassReverse no Apache, bem como a configuração do dynmap para seus locais de recursos da web. Por padrão, ele está usando caminhos relativos, então tudo que você deveria ter feito é

<Location "/map/"> ProxyPass http://192.168.2.31:8123/ </Location> Apenas observe que, nessa configuração, seu mapa dependerá do servidor estar online.

    
por 26.08.2016 / 18:20