14 messaggi dal 23 aprile 2012
Salve ragazzi, ho un bel problemino...

un mio cliente ha deciso di spostare la sua attuale applicazione, che ho sviluppato in ASP.NET 4.0 e MySQL, in un suo server in azienda;

il problema è che dovrei rispettare delle specifiche cioè:
su un server devo installare il database mysql con relativa applicazione in net che ha come classe di indirizzi IP 192.168.0.1

sul secondo server, che poi è quello che si affaccia sul web dovrei creare una directory virtuale in IIS che punta all'applicazione installata sul primo server però questo server ha una classe di indirizzi IP uguale a 1.1.1.10; di mezzo ai due, per scelte aziendali vi è una dmz;

morale della favola vorrei sapere come posso puntare all'applicazione dal secondo server (che fa solo da ponte o redirect) sul primo dove vi sono applicazione e database poiché i due in rete locale, chiaramente, non si vedono; so che è possibile farlo poiché lo stesso cliente sfrutta questa situazione con un altro fornitore software (però con un'applicazione in java)...

avreste qualche consiglio o qualche dritta sono bloccato

grazie in anticipo
14 messaggi dal 23 aprile 2012
Ragazzi qualche idea please??...

correggo la mia richiesta posso in qualche modo creare un redirect tra i due server anche se non sono sulla stessa classe di indirizzi ip?

per esempio so che per applicazioni scritte in java (con motore tomcat) c'è una libreria apposita isapi_redirect.dll che punta ad un host differente ed è mappata su IIS come directory virtuale..

Attendo qualche riscontro

grazie ancora...
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
dai che si riesce a risolvere :)

Non si tratta esattamente di redirect, ma di reverse proxy. Usare queste parole chiave ti aiuterà nella ricerca.

Qui hai due questioni da affrontare, prendiamone una alla volta.
  • Routing. Se il server 1.1.1.10 si trova in una DMZ allora, per sua definizione, non riuscirà a raggiungere qualsiasi macchina che si trovi in LAN (sottorete 192.168.0.0/24).
    Comunque verificalo. Accedi col desktop remoto alla macchina 1.1.1.10, apri il suo browser e da lì prova a visitare l'url http://192.168.0.1/ (o qualsiasi sia l'url per accedere all'applicazione).
    Se non funziona, allora devi farti aiutare dall'amministratore di rete del tuo cliente perché altrimenti non c'è modo di far comunicare le due macchine. Devi chiedergli di crearti un pinhole verso 192.168.0.1 sulla porta 80 (o altra porta che stai usando) per il traffico che arriva da 1.1.1.10.
    Ripeti l'esperimento di cui sopra. Se non funziona ancora, chiedi all'amministratore di spiegarti come mai.
    Per l'altra applicazione che hai citato (quella Java), è stato quasi sicuramente fatto un intervento del genere. Infatti non ha importanza se sulla macchina 192.168.1.10 stia girando IIS, Tomcat o Apache, si tratta di una questione di routing che va risolta.
  • Reverse Proxy. Ora, che versione di IIS hai sulla macchina 1.1.1.10? Lì devi configurare un reverse proxy, ossia fare in modo che qualsiasi richiesta arrivi ad un determinato URL venga reinoltrata, così com'è, al webserver che si trova su 192.168.0.1 (esempio: ogni richiesta inizi con /subdir).
    Se hai IIS7 o superiore sei molto facilitato perché questa cosa si può fare con il modulo URL Rewrite, installabile anche attraverso il Web Platform Installer.
    Installa anche l'estensione Application Request Routing, anch'essa disponibile dal WPI.
    A questo punto segui la guida:
    http://www.iis.net/learn/extensions/url-rewrite-module/reverse-proxy-rule-template
    In sostanza devi accedere alla console di IIS, selezionare il tuo sito dall'albero a sinistra e fare doppioclick sull'icona URL Rewrite. Là troverai il template "Proxy inverso", usa quello. Nella prima casella devi digitare l'indirizzo del server a cui verranno reindirizzate le richieste (cioè 192.168.0.1:80) e sotto hai la possibilità di abilitare la riscrittura dei link (questa opzione puoi anche abilitarla in un secondo momento). Cioè, se il server remoto produce pagine HTML contenenti tag A, IMG e FORM che recano il percorso assoluto (cioè http://192.168.0.1/...) allora questi frammenti vanno riscritti.
    Clicca OK e ti verrà creata una regola di URL rewriting. Così com'è però non va bene perché tu vuoi che solo le richieste ad una sottocartella vengano riscritte. Dunque modifica la regola e nella casella digitane il nome, ad esempio subdir/
    In questo modo non è necessario creare una directory virtuale in IIS ma tutto avviene con una regola di URL rewriting.


ciao
Modificato da BrightSoul il 28 maggio 2013 20.33 -

Enjoy learning and just keep making
14 messaggi dal 23 aprile 2012
Ciao BrightSoul e grazie per la tua risposta ho preso in considerazione quanto da te detto, l'unico problema (ti chiedo scusa causa mia non mi sono esposto bene), è che il server 192.168.0.2 sul quale dovrebbe esserci fisicamente la cartella con il sito in asp.net e sul quale gira anche il database non è un webserver ma semplicemente un server interno usato dal cliente per gestire anche altri applicativi in lan;

spulciando e guardando come si è comportato l'altro fornitore software ho notato che usando la libreria isapi_redirect (mappata a sua volta con una virtual directory da iis sul server 1.1.1.10) all'interno della cartella in cui c'è sta benedetta dll ci sono dei file di configurazione(uriworkersmap.properties e workers.properties) che rimandano fisicamente al server 192.168.0.2
esempio nel file workers.properties ci sono le voci:

worker.tomcat1.port=8010
worker.tomcat1.host=192.168.0.2

quindi non c'è un modo più semplice per simulare la stessa situazione con il mio sito in asp.net;
mi scuso ma purtroppo è la mia prima esperienza con questo tipo di situazione e non ne riesco a venire a capo

p.s. domanda banale dovrei a sto punto installare iis anche su 192.168.0.2?

attendo tuo cortese suggerimento

grazie
Modificato da m1h4wk il 29 maggio 2013 17.57 -
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
partiamo dalle voci nel file di configurazione

worker.tomcat1.port=8010
worker.tomcat1.host=192.168.0.2

qui si vede chiaramente che sulla macchina 192.168.0.2 è installato un server, presumibilmente Tomcat, che si pone in ascolto sulla porta 8010. Se vuoi essere sicuro che sia così, lancia questo da linea di comando e dovresti veder apparire una linea di output, a conferma che c'è qualcosa in ascolto.
netstat -oanb | find "LISTENING" | find "8010"


Dunque anche tu, per la tua applicazione ASP.NET, devi installare un webserver (IIS) sulla macchina 192.168.0.2, magari configurando il sito su una porta diversa (ad esempio la 8020, o qualsiasi altra porta tu preferisca purché non sia già presa. Ricorda che devi comunicare all'amministratore di rete la porta che hai scelto, affinché ti apra un pinhole).

Se non vuoi o non puoi installare la versione tradizionale di IIS, puoi dare un'occhiata ad IIS Express che è fondamentalmente la stessa cosa in versione standalone e senza la console grafica. Puoi scegliere tra le versioni 7.5 e 8.0, verifica se la macchina ha i requisiti per installare quella più recente.

Pensandoci bene: è realmente necessario installare IIS su 192.168.0.2? Sì, perché l'alternativa sarebbe condividere in rete la cartella in cui pubblichi il tuo sito ASP.NET, e montarla come disco su 1.1.1.10. A quel punto i file si troverebbero comunque alla mercé di un eventuale intruso che riuscisse a violare il server, quindi sarebbe vanificata l'intenzione del cliente di tenere l'applicazione protetta all'interno della rete locale (penso che sia questo il suo scopo?).

Quindi, secondo me, IIS deve essere installato anche su 192.168.0.2.

m1h4wk ha scritto:

l'altro fornitore software ho notato che usando la libreria isapi_redirect

Io purtroppo questa libreria non l'ho mai usata, ma puoi benissimo fare un tentativo. Infatti può darsi che funzioni a prescindere dal fatto che l'altro server sia Tomcat o altro. In questo caso riproduci ciò che è stato fatto per l'applicazione Java, quindi crea una cartella virtuale e duplica la configurazione che si trova nei file uriworkersmap.properties e workers.properties. Ovviamente cambia il nome del nuovo worker, che sarà per esempio iis1, e cambia anche la porta (es. 8020, come dicevo prima). Probabilmente dovrai anche cambiare l'eventuale proprietà type. Se è impostata su ajp devi mettere invece http, controlla la documentazione della libreria per la esatta stringa da usare.
Io ti consiglio comunque di usare URLRewrite+Application Request Routing, dato che sono estensioni di Microsoft ma lo capisco se prima vuoi provare con isapi_redirect.

Ora i passi da svolgere sono diventati 3.
  • Installare IIS su 192.168.0.2 e configurare il sito ASP.NET sulla porta 8020 (ammesso che non sia già presa)
  • Chiedere all'amministratore di crearti un pinhole per il traffico che parte da 1.1.1.10 e che arriva a 192.168.0.2:8020
  • Configurare il reverse proxy su 1.1.1.10 o usando la libreria isapi_redirect o URL Rewrite.


ciao, fammi sapere come va!
Modificato da BrightSoul il 29 maggio 2013 19.55 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.