Olá a todos os nginx & gurus do php
Estou instalando o dotclear (um software de blogging escrito em PHP) no meu debian, e tenho dificuldade em configurar nginx, php5-fpm e php para que:
- Eu posso usar reescrita de url de PATH_INFO já que estou seguindo o conselho de Tim Berneer de que urls não devem expor a tecnologia que você usa agora link
- arquivos satic não são não analisados pelo PHP, pois é terrivelmente inseguro deixar
example.org/uploads/image.jpg/index.php
ser enviado para o PHP
- tem um local de raiz que apenas funciona example.com deve ser reescrito para algo como example.com/index.php?start
Parece que até agora, eu tenho que escolher 2, é por isso que estou pedindo ajuda aqui.
Então aqui está o meu atual /etc/nginx/nginx.conf
%pr_e%
server {
server_name articles.eloge-de-la-folie.fr;
root /srv/data1/articles.eloge-de-la-folie.fr ;
# URLs bonitas em dotclear
# ativar URLs de PATH_INFO em /admin/blog_pref.php
localização @pathinfo {
reescreva ^ /index.php$uri?$args last;
}
location = / {
reescreva ^ /index.php?start por último;
}
localização ~ ^ (. +. php) (/.*)? $ {
inclua fastcgi_params_pathinfo;
}
}
Eu coloquei tudo relacionado ao fastcgi em um arquivo /etc/fastcgi_params_pathinfo
config separado
index index.php?start ;
location / {
try_files $uri $uri/ @pathinfo ;
#try_files $uri $uri/ /index.php$uri?$args;
}
Também em /etc/php5/fpm/pool.d/www.conf
, certifiquei-me de remover o comentário desta
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
#fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS $https;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
# this is what I changed
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.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;
O que acontece atualmente?
- example.com/index.php e example.com/post/test são passados para o interpretador php e funcionam
- example.com/css/style.css não são passados para php e funciona
- mas quando eu vou para example.com, o index.php é apenas baixado, não interpretado.
Meu location = / { configuration here }
aparentemente nunca corresponde: (
Obrigado antecipadamente,
Jean-Michel