Yii Reverse Proxy Non Funge

Ciao a tutti,

sto facendo un applicazione web e in locale funziona, ma una volta in produzione no perchè è accessibile tramite un

un reverse proxy,e l’applicazione non costruisce gli url giusti.

mettendo nel file di configurazione main.php

‘request’=>array(

        'enableCsrfValidation'=>true,


                    'hostInfo'=>'htt ps://'.$_SERVER['HTTP_X_FORWARDED_HOST'].'/<sitefolder>/'


    ),

non funziona lo stesso.

I temi e i css sono riuscita a farli caricare settando il baseUrl

‘request’ => array(

             'enableCsrfValidation'=>true,


             'hostInfo'=>'htt ps://www.webserver.com/miosito/',


         





        'baseUrl' => '/miosito',


    ),

ma il non riesco a navigare/effettuare il login

Come devo fare? qualche idea?

Ho anche trovato questo post

ht tp://www.yiiframework.com/forum/index.php/topic/15831-yii-reverse-proxy-site/

ma non funziona :-[

Cosa vuole dire "non funziona"? Devi darci un "errore".

Colgo l’occasione per chiederti come mai stai usando un reverse proxy.

compilo il form del login e al submit non entra nella actionLogin

nel senso che ho un form

con

Username -texfield

Password -textfield

link forgot

i il tasto del submit

se faccio il login non mi va nemmeno alla action site/login (che nel mio caso dovrebbe essere miosito/site/login ) e il link forgot costruito cosi:

<a href="<?php echo Yii::app()->createUrl(‘site/forgot’);?> ">Problemi

																																			di accesso all'account?&lt;/a&gt;

mi fa andare alla pagina

https://www.webserver.com/site/forgot

ma a me serve che vada a

https://www.webserver.com/miosito/site/forgot

:(

ho lo stesso problema del post:

http://www.yiiframework.com/forum/index.php/topic/15831-yii-reverse-proxy-site/

ma non riesco a risolverlo

Usiamo un reverse proxy perchè il nostro cliente l’ha scelto per sicurezza

Idee?

Grazie grazie

Ciao Samanta,

forse ho trovato la soluzione ai tuoi problemi.

E’ da un pò di tempo che ho il sospetto che l’ultima versione di Yii abbia qualche bug

(o forse manca di documentazione sui cambiamenti apportati)

Infatti ho letto da qualche parte che non vogliano più supportare la compatibilità con la vecchia release,

solo che non si sa bene come bisogna scrivere nella nuova modalità.

Per esempio sono[size="2"] impazzito 2 giorni per sistemare ciò che prima funzionava, sulla paginazione con CListView[/size]

Avevo creato un nuovo skeleton usando Yii 1.1.12 e poi copiato controller, model, view e persino config/main.php

di un progetto funzionante [size="2"]e la paginazione funzionava "ad capocchiam "[/size]

Per risolvere ho dovuto copiare tutto il vecchio progetto funzionante (realizzato con la vecchia release 1.1.10)

e poi cancellare tutti gli altri controller , model e view (che ovviamente non mi servivano) per vederlo funzionare.

Per questo sono piuttosto convinto dell’esistenza di qualche problema sullo skeleton creato con la 1.1.12.

Perciò il mio suggerimento è di correggere innanzitutto la sintassi del tuo config/main.php così:




'components'=>array(

	'request' => array(

		'enableCsrfValidation'=>true,

		'hostInfo'=>'http://www.webserver.com/',

		'baseUrl' => '/miosito',

	),

),



che ho verificato personalmente e ti crea l’html del form login in questo modo:




<form id="login-form" action="/miosito/site/login" method="post">

...

...

</form>



come serve a te.

Se poi non ti funziona ancora, prova appunto a copiare lo skeleton di un vecchio progetto e fammi sapere.

E firebug non dice nulla?

Grazie Giancarlo,

ho quasi risolto il problema,

ho solo un problema, dovrei configurare l’urlmanager in modo che capisca che l’url di base non è

http://www.webserver.com/

ma

http://www.webserver.com/miosito

infatti ora se forzo il valore CActiveForm action=>‘miosito/site/login’

riesco a fare il login ma se chiamo ad esempio http://www.webserver.com/miosito/site/logout

Yii non riesce a capire che il controller è SiteController e la action logout.

forse si possono modificare le rules dell’urlmanager, in modo da farglielo capire,

attualmente è cosi:

‘urlManager’=>array(

		'urlFormat'=&gt;'path',


		'showScriptName'=&gt;false, //Non voglio visualizzare index.php


		'caseSensitive'=&gt;true,  			'rules'=&gt;array(


			'&lt;_c:&#092;w+&gt;/&lt;_a:&#092;w+&gt;/&lt;id:&#092;d+&gt;' =&gt;'/&lt;_c&gt;/&lt;_a&gt;',


			'&lt;_c:(chiamate)&gt;/&lt;_a:&#092;w+&gt;/&lt;id:&#092;w+&gt;' =&gt; '&lt;_c&gt;/&lt;_a&gt;',


		'&lt;controller:&#092;w+&gt;/&lt;id:&#092;d+&gt;'=&gt;'&lt;controller&gt;/view',


		),


	),

IDEE??

grazie grazie.

@sensorario io uso crome… cosa mi potrebbe dire di aiuto firebug? HELPPPP

non basta configurare l’htaccess?

del tipo




RewriteEngine On

#RewriteBase / (per config normale)

RewriteBase /miosito

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]



Ciao,

ho cambiato l’htacess

ma mi da un server error… va in loop

Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: https://www.italycsc.com/eusreporting/

Sai cosa può essere????

ps: non so se centra qualcosa ma nell’urlmanager ho ‘urlFormat’=>‘path’

questo è il mio set




'urlManager'=>array(

	'urlFormat'=>'path',

	'showScriptName'=>false,

	'caseSensitive'=>false,

	'rules'=>array(

		'<controller:\w+>/<id:\d+>'=>'<controller>/view',

                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',

		'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',

	),

),



il solito per cassare index.php e gira regolarmente nel caso l’app non sia sulla root di quel dominio.

cmq sembra un problema del mod_rewrite, ho trovato questo ma non so se può aiutarti:

Fix for infinite loops ^

An error message related to this isRequest exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace.or you may seeRequest exceeded the limit,probable configuration error,Use ‘LogLevel debug’ to get a backtrace, orUse ‘LimitInternalRecursion’ to increase the limit if necessary




RewriteCond %{ENV:REDIRECT_STATUS} 200

RewriteRule .* - [L]



Ricapitolando, tu hai:

un reverse proxy a cui ti colleghi utilizzando un url avente il seguente formato:

www.webserver.com/miosito/site/login

www.webserver.com/miosito/site/logout

che si preoccupa di ridirezionare il traffico verso il server di backend dove gira yii,

ma con degli url [size="2"]aventi il formato:[/size]

www.serverinterno.com/site/login

www.serverinterno.com/site/logout

E qualunque cosa scrivi dopo webserver.com/miosito

fosse anche [size="2"]webserver.com/miosito/super/cali/fragilisti/che/spiralidoso[/size]

ti fa collegare sempre alla stessa action dello stesso controller.

presumo la [size="2"]www.serverinterno.com/site/index (corretto?)[/size]

Quindi secondo me, .htaccess dev’essere quello standard

(vedi [size="2"]http://www.yiiframew…hide-index-php/)[/size]

perché comunque il tuo server yii accetta parametri del tipo:

www.serverinterno.com/controller/action

presumo che il problema stia nel server dove gira yii che vede nella variabile

$_SERVER[‘REQUEST_URI’] un valore del tipo [size=“2”]www.webserver.com/miosito/[/size]

anziché [size="2"]www.webserver.com/[/size]

[size="2"]Se la mia teoria è corretta, bisognerebbe lavorare sulle rules di [/size]urlManager,

ma non saprei come far sparire quel cavolo di miosito/