Adicione index index.php
ao seu bloco location /
, ou o nginx não saberá que você está tentando exibir index.php por padrão.
A opção fastcgi_index
não ajuda, pois só é considerada se o URI terminar em .php ...
Eu tenho uma configuração bem simples com nginx e php-fpm, no entanto, quando tento acessar meu site com my-website.com
, recebo um erro 403 proibido. Se eu acessar my-website.com/index.php
, tudo funciona bem.
Isso é o que está aparecendo no meu log:
a.ipv4.addr.here - user [14/Dec/2013:11:46:41 +0100] "GET / HTTP/1.1" 403 192 "https://my-website.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36"
Esta é a saída de ls -l
do diretório htdocs:
drwxr-xr-x 14 www-data www-data 4.0K Dec 12 16:02 htdocs
Estou realizando um http-redirect para https para forçar ssl, aqui está a configuração:
server {
listen 80;
listen [::]:80;
root /var/www/my-domain.com/htdocs/;
index index.php index.html index.htm /index.php;
server_name my-domain.com;
rewrite ^ https://$server_name$request_uri? permanent;
}
E aqui está a configuração do servidor na porta 443:
server {
listen 443;
listen [::]:443;
server_name my-domain.com;
root /var/www/my-domain.com/htdocs/;
index index.php index.html /index.php;
access_log /var/log/nginx/my-domain.log;
ssl on;
ssl_certificate /etc/ssl/certs/my-domain.com.crt;
ssl_certificate_key /etc/ssl/private/my-domain.com.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ =404;
auth_basic "Restricted:";
auth_basic_user_file .htpasswd;
}
location ~ \.php$ {
auth_basic "Restricted:";
auth_basic_user_file .htpasswd;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
#deny access on dotfiles
location ~ /\. {
deny all;
}
}
E aqui está a saída ls -l
para o index.php:
-rwxr-x--x 1 www-data www-data 2.4K Dec 12 11:11 index.php