Configuração correta do nginx para reescrita e controle de acesso

1

Aqui está minha configuração atual do nginx

server_name  web.com;
server_tokens off;

root /usr/share/nginx/html/web;
index index.php;   

if ( $request_uri ~ "/index.(php|html?)" ) {
rewrite ^ /$1 permanent;
}

location / {   
try_files $uri $uri/ /index.php?$args =404; 
}

error_page   404              /404.html;
error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/share/nginx/html;
}


location ~ /\.ht {
    deny  all;
}   

location ~ \.php$ {
    try_files  $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

O que estou tentando fazer:

  1. web.com?page=somepage&other_arg=arg&.. reescreve para web.com/somepage/arg/... .

Meus métodos não funcionaram, às vezes com erros: failed (104: Connection reset by peer) while reading response header from upstream ou accept4() failed (24: Too many open files)

  1. Permitir acesso direto via URL do navegador apenas para index.php na pasta raiz. Outros arquivos e diretórios não podem ser acessados via navegador (mas podem por meio de GET, POST, etc)

Eu usei a diretiva internal , trabalhei como esperado, mas não pude definir exceção para index.php

Alguém poderia sugerir um método ideal de fazer isso?

    
por Sonya Seyrios 05.08.2017 / 18:08

0 respostas