Suporte do nginx para regras .htaccess / reescrever? Diferenças do Apache?

16

Eu trabalho com servidores http Apache há algum tempo e, finalmente, mudo para servidores de conteúdo estático ao lado de outras máquinas de conteúdo dinâmico.

Eu estava pensando, o nginx suporta arquivos ".htaccess" e coisas como mod_rewrite?

Como estou muito acostumado com a sintaxe, fiquei pensando quais seriam as diferenças (sintaxe) e como seria a curva de aprendizado, passando das configurações do Apache para o nginx.

covarde anônimo
fonte

Respostas:

15

A sintaxe de reescrita do nginx é muito mais limpa que a contraparte no mod_rewrite:

regra mod_rewrite:

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

Torna-se no nginx:

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

Mas não há suporte a .htaccess ...

Edit: Outro exemplo de como oferecer suporte a http://example.com/~username/ urls no nginx:

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

O nginx fornece funcionalidade de reescrita, verifique NginxHttpRewriteModule

O que você deseja fazer com o .htaccess? Você pode configurar o nginx para autenticação básica com NginxHttpAuthBasicModule, mas as diretivas de configuração do AFAIK só podem ser armazenadas no nginx.conf

zarkdav
fonte
2
Essencialmente, eu queria saber sobre as configurações por diretório. Eu vou R a FM agora. =)
covarde anônimo
4

Parece que o nginx tem um mod_rewrite equivalente e a documentação pode ser encontrada aqui . Eu não usei o nginx, mas a documentação parece que a configuração é totalmente diferente, mas não deve ser muito difícil entender o que está fazendo. O wiki parece ter muitos exemplos.

Não sei responder se você pode ter arquivos de configuração por diretório, como pode com o apache. Não me surpreenderia se você pudesse, porque as pessoas esperam isso usando o apache.

David Pashley
fonte
0

O NGINX suporta configurações em muitos arquivos através da diretiva 'include'. Basicamente, ele carrega uma subconfiguração e a coloca no lugar. Ele também suporta caracteres curinga, por isso é fácil carregar muitos deles de uma só vez.

A única limitação (na minha opinião) é que você precisa recarregar quando a configuração for alterada. Portanto, qualquer usuário que tenha uma parte da configuração pode precisar de direitos para recarregar a configuração do nginx:

/etc/ini.d/nginx force-reload (no centos)

Realmente não sei se existe uma maneira de evitar isso ou fazer de maneira diferente, porque eu uso o NGINX em muitos servidores com muitos aplicativos (hosts virtuais) que são meus. Isso significa que o NGINX não é ideal para hospedagem compartilhada.

No entanto, eu realmente amo o NGINX porque a configuração é muito mais legível do que um arquivo XML desagradável. Questão de gosto, eu acho. O outro ponto positivo é obviamente a velocidade, se for importante no seu caso.

Boa sorte mig


fonte