재작성 및 액세스 제어를 위해 nginx를 올바르게 구성하십시오.

재작성 및 액세스 제어를 위해 nginx를 올바르게 구성하십시오.

이것은 내 현재 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;
}

내가 하려는 일:

  1. web.com?page=somepage&other_arg=arg&..로 다시 작성되었습니다 web.com/somepage/arg/....

내 방법이 작동하지 않습니다. 가끔 오류가 발생합니다. failed (104: Connection reset by peer) while reading response header from upstream또는accept4() failed (24: Too many open files)

  1. 루트 폴더의 index.php에 대한 직접 액세스는 브라우저 URL을 통해서만 허용됩니다. 다른 파일 및 디렉터리는 브라우저를 통해 접근할 수 없습니다. (단, GET, POST 등을 통해 접근할 수 있습니다.)

지시문을 사용했는데 internal예상대로 작동하지만 index.php에 대한 예외를 설정할 수 없습니다.

누구든지 최선의 접근 방식을 제안할 수 있습니까?

관련 정보