Поддержка nginx для правил .htaccess / rewrite? Отличия от Apache?

16

Я уже давно работаю с серверами Apache http и, наконец, перешел на серверы со статическим контентом вместе с другими компьютерами с динамическим контентом.

Мне было интересно, поддерживает ли nginx файлы ".htaccess" и такие вещи, как mod_rewrite?

Поскольку я очень привык к синтаксису, мне было интересно, в чем заключаются различия (синтаксиса) и какова кривая обучения при переходе от конфигураций Apache к nginx.

анонимный трус
источник

Ответы:

15

Синтаксис перезаписи nginx намного чище, чем аналог в mod_rewrite:

правило mod_rewrite:

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

Становится в nginx:

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

Но нет поддержки .htaccess ...

Изменить: Еще один пример, как поддерживать http://example.com/~username/ urls в nginx:

location ~ /~([a-zA-Z0-9]*)/(.*) {
    root /home/;
    autoindex on;
    index index.html;
    rewrite ^/~([a-zA-Z0-9]*)/(.*)$ /$1/www/$2 break;
}
rkthkr
источник
5

nginx обеспечивает функциональность перезаписи, проверьте NginxHttpRewriteModule

Что вы хотите сделать с .htaccess? Вы можете настроить nginx для базовой аутентификации с помощью NginxHttpAuthBasicModule, но директивы конфигурации AFAIK могут храниться только в nginx.conf

zarkdav
источник
2
По сути, я задавался вопросом о настройках для каждого каталога. Я пойду R FM сейчас. =)
анонимный трус
4

Похоже, что у nginx есть mod_rewrite, и документацию можно найти здесь . Я не использовал nginx сам, но документация выглядит так, как будто конфигурация совершенно другая, но не должно быть слишком сложно понять, что он делает. В вики есть много примеров.

Я не могу ответить, если вы можете иметь для каждого каталога конфигурационные файлы, как вы можете с Apache. Меня это не удивит, если вы сможете, потому что люди ожидают этого от использования Apache.

Дэвид Пашли
источник
0

NGINX поддерживает конфигурацию во многих файлах с помощью директивы include. По сути, он загружает субконфигурацию и помещает ее на место. Он также поддерживает персонажей-джокеров, поэтому многие из них можно загрузить одним выстрелом.

Единственное ограничение (на мой взгляд) заключается в том, что вам нужно перезагрузить компьютер при изменении конфигурации. Поэтому любому пользователю, у которого есть часть конфигурации, могут потребоваться права для перезагрузки конфигурации nginx:

/etc/ini.d/nginx принудительная перезагрузка (в сентосах)

Я действительно не знаю, есть ли способ избежать этого или сделать это по-другому, потому что я использую NGINX на многих серверах с большим количеством приложений (виртуальных хостов), которые являются моими собственными. Это будет означать, что NGINX не идеален для виртуального хостинга.

Тем не менее, я действительно люблю NGINX, потому что конфигурация гораздо удобнее, чем неприятный XML-файл. Вопрос вкуса, наверное. Другой хороший момент, очевидно, скорость, если это важно в вашем случае.

Удачи миг


источник