Конфигурации Nginx - PullRequest
       5

Конфигурации Nginx

1 голос
/ 05 марта 2012

Я просматриваю несколько документов, но по какой-то причине я не могу обернуться вокруг конфигурации, необходимой для того, что я пытаюсь сделать.В основном я хочу:

  • Все запросы к каталогам должны сохранять свои URL, но должны обрабатываться index.php

  • Все .js, .css,.Файлы jpeg и .png в их соответствующих каталогах (/ js /, / css / и / images /) должны предоставляться без обработки php.

  • Любой другой доступ к файлам должен быть запрещен (включая все .php).

Я пытался настроить места для обработки .php, но никогда не могу понять, как заставить его работать правильно.Я собираюсь продолжать в том же духе, но также надеялся на некоторую быструю помощь:)

Спасибо!

Редактировать 2: Я думаю, что придумал что-то приличное.Возможно, он не идеален, но должен работать.

server {
    listen 80;

    server_name _;
    server_tokens off;

    root /mypath/www;

    access_log /mypath/access.log;
    error_log /mypath/error.log;

    index index.html;

    location ^~ /app {
        return 404;
    }

    location ~ \.conf {
        return 404;
    }

    location ~ \.php {
        return 404 ;
    }

    location ~ /images/.*.(jpg|jpeg|png|gif) {
        try_files $uri $uri = 404;
        expires max;
    }

    location ~ /css/.*.css {
        try_files $uri $uri = 404;
        expires 1d;
    }

    location ~ /js/.*.js {
        try_files $uri $uri = 404;
        expires 1d;
    }

    location / {
        try_files $uri @PHPProxy;
        error_page 500 501 502 503 504 505 $document_root/error.html;
    }

    location @PHPProxy {
        include fastcgi_params;
        fastcgi_pass unix:/tmp/php.socket;
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    }
}

1 Ответ

2 голосов
/ 05 марта 2012

Это было довольно забавно думать.Ранее я только что удостоверился, что заблокировал каталоги или удостоверился, что у меня нет файлов, к которым я не хочу обращаться в моем корне документа.

Я думаю, что нашел способ сделать это.На самом деле он не дает 404 или 403 для других файлов, он просто переписывает все, кроме указанных каталогов, в /index.php.

Вот конфигурация, с которой я тестировал:

server {
listen 80;
listen your.domain.name:80;
server_name your.domain.name;

root /var/www/vhost/testing;
server_tokens off;

location ~ ^/(images|css|js)/.* {
    expires max;
}
location / {
    index index.php;
    rewrite ^(.*)$ /index.php$1 last;
}
location ~ ^/index.php {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
}
}

Таким образом, все в / images, / css или / js будет просто загружаться, но все остальное перезаписывается в индексный файл.

Имейте в виду, что любые файлы, не находящиеся в этих 3 папках, будут полностью пропущены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...