obsługa nginx dla reguł .htaccess / przepisywania? Różnice w stosunku do Apache?

16

Pracuję z serwerami HTTP Apache od dłuższego czasu i wreszcie przeniosłem się na serwery o statycznej zawartości wraz z innymi maszynami o dynamicznej zawartości.

Zastanawiałem się, czy nginx obsługuje pliki „.htaccess” i takie rzeczy jak mod_rewrite?

Ponieważ jestem bardzo przyzwyczajony do składni, zastanawiałem się, jakie były różnice (składniowe) i jak wygląda krzywa uczenia się przechodzenia od konfiguracji Apache do nginx.

anonimowy tchórz
źródło

Odpowiedzi:

15

Składnia przepisywania nginx jest znacznie czystsza niż odpowiednik w mod_rewrite:

reguła mod_rewrite:

 RewriteRule ^[a-z0-9_-]*-f([0-9]+)/?(p([0-9]+)\.html)?$ /viewforum.php?f=$1&start=$3 [QSA,L,NC]

Staje się w Nginx:

rewrite ^/[a-z0-9_-]*-f([0-9]+)/?(p([0-9]+)\.html)?$ /viewforum.php?f=$1&start=$3 last;

Ale brak wsparcia .htaccess ...

Edycja: Kolejny przykład obsługi http://example.com/~nazwa_użytkownika/ adresów URL w nginx:

location ~ /~([a-zA-Z0-9]*)/(.*) {
    root /home/;
    autoindex on;
    index index.html;
    rewrite ^/~([a-zA-Z0-9]*)/(.*)$ /$1/www/$2 break;
}
rkthkr
źródło
5

nginx zapewnia funkcję przepisywania, sprawdź NginxHttpRewriteModule

Co chcesz zrobić z .htaccess? Możesz skonfigurować nginx do podstawowego uwierzytelniania za pomocą NginxHttpAuthBasicModule, ale dyrektywy konfiguracyjne AFAIK mogą być przechowywane tylko w nginx.conf

zarkdav
źródło
2
Zasadniczo zastanawiałem się nad ustawieniami dla poszczególnych katalogów. Pójdę teraz na FM. =)
anonimowy tchórz
4

Wygląda na to, że nginx ma odpowiednik mod_rewrite, a dokumentację można znaleźć tutaj . Sam nie używałem nginx, ale dokumentacja wygląda tak, jakby konfiguracja była zupełnie inna, ale zrozumienie tego, co robi, nie powinno być trudne. Wiki wydaje się mieć wiele przykładów.

Nie mogę odpowiedzieć, czy możesz mieć pliki konfiguracyjne dla poszczególnych katalogów, tak jak możesz to zrobić za pomocą apache. Nie zdziwiłbym mnie, gdybyś mógł, ponieważ ludzie zaczęli oczekiwać, że po użyciu apache.

David Pashley
źródło
0

NGINX DOES obsługuje konfiguracje wielu plików dzięki dyrektywie „include”. Zasadniczo ładuje podkonfigurację i umieszcza ją na swoim miejscu. Obsługuje również postacie jokerów, więc łatwo jest załadować wiele z nich za jednym razem.

Jedynym ograniczeniem (moim zdaniem) jest to, że musisz przeładować po zmianie konfiguracji. Tak więc każdy użytkownik, który ma konfigurację, może potrzebować praw do przeładowania konfiguracji nginx:

/etc/ini.d/nginx force-reload (w centach)

Naprawdę nie wiem, czy istnieje sposób, aby tego uniknąć, czy zrobić to inaczej, ponieważ używam NGINX na wielu serwerach z wieloma aplikacjami (wirtualnymi hostami), które są moje. Oznaczałoby to, że NGINX nie jest idealny do współdzielonego hostingu.

Niemniej jednak uwielbiam NGINX, ponieważ konfiguracja jest o wiele bardziej czytelna niż nieprzyjemny plik XML. Pytanie o gust, tak myślę. Inną zaletą jest oczywiście szybkość, jeśli jest to ważne w twoim przypadku.

Powodzenia mig


źródło