nginx suporte para regras de .htaccess / rewrite? Diferenças do Apache?

16

Tenho trabalhado com servidores http Apache por algum tempo e, finalmente, estou migrando para servidores de conteúdo estático, juntamente com as outras máquinas de conteúdo dinâmico.

Eu queria saber, o nginx suporta arquivos ".htaccess" e coisas como o mod_rewrite?

Como estou muito acostumado com a sintaxe, fiquei me perguntando quais eram as diferenças (de sintaxe), e como é a curva de aprendizado se movendo das configurações do Apache para o nginx.

    
por anonymous coward 11.06.2009 / 19:02

4 respostas

15

A sintaxe de reescrita do nginx é muito mais limpa do que a contrapartida 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 para .htaccess ...

Editar: outro exemplo de como dar suporte a URLs link no nginx:

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

O nginx não fornece funcionalidade de reescrita, verifique NginxHttpRewriteModule

O que você quer 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 em nginx.conf

    
por 11.06.2009 / 19:15
4

Parece que o nginx tem um equivelent do mod_rewrite e a documentação pode ser encontrada aqui . Eu não usei 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.

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

    
por 11.06.2009 / 19:11
0

O NGINX suporta configurações com muitos arquivos através da diretiva 'include'. Basicamente, ele carrega uma sub-configuração e a coloca no lugar. Ele também suporta caracteres joker, 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 é alterada. Portanto, qualquer usuário que tenha alguma configuração pode precisar de direitos para recarregar a configuração do nginx:

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

Eu realmente não sei se existe uma maneira de evitar isso ou fazer diferente porque eu uso o NGINX em muitos servidores com muitos aplicativos (hosts virtuais) que são meus. Isso significaria 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. Pergunta de gosto eu acho. O outro ponto positivo é obviamente a velocidade, se for importante no seu caso.

Boa sorte mig

    
por 01.06.2010 / 15:48