Nastavení NGINX + HTTPS + PHP-FPM
- Oli
- Člen | 1215
Ahoj,
už se s tím peru 3. den. Zkoušel jsem si nasadit nginx spolu s HTTPS.
Vygeneroval jsem si 3 měsíční certifikát na vyzkoušení na crt.siplia.cz.
Pak jsem postupoval podle návodu @FilipProcházka https://filip-prochazka.com/…sts-security. Udělal jsem jen
1 odchylku co tak vím: Vygeneroval jsem si privátní klíč přímo
u simplie
Problém je v tom, že HTTP verze stránek mě funguje (na jiný doméně, protože jsem si už chytře nastavil HSTS), ale verze HTTPS nefunguje.
Pokud nastavím
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
,
tak mě to při každým requestu přesměrovává mezi HTTP a HTTPS s chybou
ERR_TOO_MANY_REDIRECTS
.
Pokud tenhle řádek zakomentuju, tak to vrací Access denied
.
V tomhle případě to zaznamená i error.log
[error] 11642#11642: *1128 FastCGI sent in stderr: „Access to the script ‚/path/to/www/‘ has been denied (see security.limit_extensions)“ while reading response header from upstream, client: IP address, server: olisar.eu, request: „GET / HTTP/1.1“, upstream: „fastcgi://unix:/var/run/php5-fpm.sock:“, host: „olisar.eu“
Na netu jsem našel, že tenhle problém se vyřeší odkomentováním
řádku security.limit_extensions = .php .php3 .php4 .php5
v
www.conf
, to ale nepomohlo.
Přijde mě, že jsem všechno nastavení zkoušel už několikrát v různých kombinacích… Neměl někdo podobný problém, nebo neví jak to vyřešit?
PS. Ten blok s PHP nastavením vypadá aktuálně takhle:
location ~ [^/]\.php(/|$) { # main block with PHP processing
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# fastcgi_param HTTPS on;
try_files $uri =404;
include fastcgi_params;
}
- jiri.pudil
- Nette Blogger | 1032
Pokud nastavím fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;, tak mě to při každým requestu přesměrovává mezi HTTP a HTTPS s chybou ERR_TOO_MANY_REDIRECTS.
Máš routy nastavené s flagem SECURED?
- Oli
- Člen | 1215
@Aurielle díky. Teď jsem si k tomu něco přečetl a budu to muset
nastavit přímo v aplikaci, protože ne všechny domény na serveru mám HTTP
a tam by cookie nefungovali s nastavením
session.cookie_secure = 1
v php.ini (jestli jsem to dobře
pochopil)?
Ještě nějaký tipy na zlepšení, který nejsou tak úplně samozřejmý? :-)
- Aurielle
- Člen | 1281
@Oli: Nejlepší je nastavit v Nette, zrovna se to tu před pár dny probíralo.
Další tipy na zlepšení asi nemám, Filip to má na blogu popsané dost dobře. Snad jedině v php.ini nastavit následující, nechávat to ve výchozím nastavení zapnuté může být bezpečnostní riziko (bližší vysvětlení tady), pokud na server necháváš nahrávat uživateli nějaké soubory. Ale už z chyby v prvním příspěvku vidím, že máš (defaultně) nastavený ten limit na přípony skriptů, takže nejspíš není třeba.
cgi.fix_pathinfo=0
Jestli máte někdo o tématu načteno více a pletu se, klidně mě opravte :)