2016-08-03 16 views
0

Ich migrieren Apache zu Nginx. In Apache legte ich .htaccess in Ordner, aber nginx hat dies nicht.Nginx erlauben User Agent spezifischen Verzeichnis

Ich habe Ordner/admin und es kann nur aufgerufen werden, indem User Agent: Administrator ich tun:

location ~ /admin { 
if ($http_user_agent !~* "Administrator") { 
    return 404; 
} 
try_files $uri =404; 

}

Und es funktioniert, aber .php Dateien werden nicht interpretiert.

Wie kann ich das tun?

Edit:

server { 
listen  80; 
server_name myserver.com; 

root   /usr/share/nginx/html; 

location/{ 
} 

location ~ /admin { 
    if ($http_user_agent !~* "Administrator") { 
     return 404; 
    } 
    try_files $uri =404; 
} 

location ~ \.php$ { 
    try_files $uri =404; 
    fastcgi_pass unix:/run/php-fpm/php-fpm.sock; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    include fastcgi_params; 
} 

include /etc/nginx/default.d/*.conf; 

}

+0

check edits .... –

Antwort

0

Es gibt ein Problem mit der Spezifikation über Agentenrückruf statt "Administrator" sollte es (Administrator) Rest des Codes sein scheint in Ordnung zu sein. Wenn Sie zusätzlich try_files $uri =404; hinzugefügt haben, entfernen Sie es, wie es nicht erforderlich ist. Rückgabe 404 bereits definiert.

Versuchen Sie diesen

server { 
listen  80; 
server_name myserver.com; 
root /usr/share/nginx/html; 
location ~ \.php$ { 
try_files $uri =404; 
fastcgi_pass unix:/run/php-fpm/php-fpm.sock; 
fastcgi_index index.php; 
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
include fastcgi_params; 
if (!-e $request_filename) { 
    rewrite ^.*$ /index.php last; 
    } 
} 
location ~ /admin { 
if ($http_user_agent !~* "Administrator") { 
    return 404; 
    } 
    try_files $uri =404; 
} 
include /etc/nginx/default.d/*.conf; 
} 

Neustart nginx Service vor dem Test!

+0

Das Problem ist, wenn ich auf eine. PHP-Datei innerhalb/Admin zugreifen, in meinem Browser PHP-Code anzeigen. Ich denke, es ist, weil .php config ist an einem anderen Ort – Alexis

+0

werden Sie in der Lage sein, vollständigen Code zu veröffentlichen, wie vordefinierte Ort Methoden sehen möchten, wenn –

+0

'server { \t hören 80; \t Servername myserver.com; \t root/usr/teilen/nginx/html; \t Standort/{ \t} \t Lage ~/admin { \t \t if ($ HTTP_USER_AGENT ~ * "Administrator"!) { \t \t \t return 404; \t \t} \t \t try_files $ uri = 404; \t} \t Lage ~ \ .php $ { \t \t try_files $ uri = 404; \t \t fastcgi_pass unix: /run/php-fpm/php-fpm.sock; \t \t fastcgi_index index.php; \t \t fastcgi_param SCRIPT_FILENAME $ Dokumentstammverzeichnis fastcgi_script_name; \t \t gehören fastcgi_params; \t} \t include /etc/nginx/default.d/*.conf; } ' – Alexis