22. 1. 2013

NGINX, FastCGI a HTTPS (Nette, CakePHP, Python...)

Spravne nastavene server variables pro FastCGI pres NGINX


Po prechodu na PHP-FPM nam zacala zlobit aplikace, ultimate redirect.

Zjistill jsem, ze aplikace nam posila 301 a adresu nasi aplikace obohacenout o port 80.

Po 3 hodinach bylo jasne, ze se aplikace snazi aplikace presmerovat na non-HTTPS verzi. Ale proc? HTTPS zapnute nebylo?

NGINX od verze 1.1.11 defaultne nepredeva informaci o tom, zda je pripojeni zabezpecene ci nikoliv, toto zprostredkovava tento radek:

fastcgi_param  HTTPS                   $https;

pokud $https neni nastavene; preda se prazdna hodnote ''

pokud pouzivate SSL, neni to problem, hodnota bude 'on'


nette s touto operaci pracuje, a pokud HTTPS nechce tak se snazi nas presmerovat na non-HTTPS, ale chudinka je furt presvedcena o tom, ze mi SSL pouzivame, tak to zase posle.

Reseni pro non-ssl (pokud musite mit HTTPS v server variables)


nginx configuration:
fastcgi_param HTTPS                 off;

Reseni pro ssl-enabled:
fastcgi_param HTTPS                 on;
fastcgi_param SSL_PROTOCOL          $ssl_protocol;
fastcgi_param SSL_CIPHER            $ssl_cipher;
fastcgi_param SSL_SESSION_ID        $ssl_session_id;
fastcgi_param SSL_CLIENT_VERIFY     $ssl_client_verify;
 
Credits: http://claylo.com/post/7617674014/ssl-php-fpm-and-nginx 
 

Univerzalnejsi a lepsi reseni, pokud vam bude stacit, ze tam pro non-SSL HTTPS nebude vubec: 

fastcgi_param HTTPS           $https if_not_empty;