Qual é o nome e o local do arquivo de configuração do Nginx (equivalente ao htaccess)?

30

Existem muitos tutoriais sobre como escrever regras de reescrita do Nginx para imitar o arquivo .htaccess do Apache, mas não posso dizer com segurança que sei qual é o nome ou o local desse chamado arquivo de configuração do Nginx. Estou procurando especificamente o arquivo de configuração do Nginx que permite escrever o caminho do servidor e as diretivas PHP. Estou usando o Ubuntu 12 linux e Codeigniter como minha estrutura PHP.

Aqui está o que eu sei até agora:

  1. Este arquivo: /etc/nginx/nginx.confapesar de seu nome atraente, aparentemente não é o lugar para diretivas de servidor.
  2. Este arquivo: /etc/nginx/sites-available/defaultparece o que eu preciso (sou capaz de gerar erros de php específicos para meu aplicativo), mas não consigo corrigir o roteamento de caminho específico do Codeigniter. Primeiro de tudo, é este o arquivo "config" / .htaccess equivalente que todo mundo fala?
Tim Peterson
fonte
Seu problema não é com a linguagem PHP (isto é, programação em PHP), é com a configuração do PHP em um servidor específico, o que explica os votos próximos completamente válidos. Não posso comentar sobre a última parte do seu post, pois parece altamente subjetivo e tendencioso.
nickb
11
Você pode encontrar onde o nginx config está localizado usando o nginx -Vque você pode encontrar no manual man nginx. A -Vopção está documentada como "-V Imprima a versão nginx, versão do compilador e configure os parâmetros do script". Se nginxnão estiver em seu caminho, o uso which nginxque retorna o caminho completo para nginx$(which nginx) -V
bucabay

Respostas:

28

Eu uso PHP com nginx no meu servidor de desenvolvimento com a seguinte configuração:

  1. em /etc/nginx/nginx.confacrescentei: include /etc/nginx/sites-enabled/*;antes do último }.

  2. execute os seguintes comandos para criar as configurações do seu site:

    mkdir /etc/nginx/sites-available/
    mkdir /etc/nginx/sites-enabled/
    cp /etc/nginx/conf.d/default.conf /etc/nginx/sites-available/<site>
    
  3. edite a configuração do site, algumas configurações possíveis (isto é o que me referi na minha instalação): http://kbeezie.com/view/nginx-configuration-examples/

  4. link para o site disponível para ativá-lo

    ln -s /etc/nginx/sites-available/<site> /etc/nginx/sites-enabled/<site>
    
  5. lembre-se de que você pode realmente incluir arquivos nas configurações em praticamente qualquer lugar, isso facilita a criação de vários sites quando você deseja criar configurações semelhantes.

Sim, o .htaccess é comparável ao server{}bloco no nginx, mas eles também são muito diferentes. O nginx tem uma abordagem muito mais leve para analisar a configuração, e não examinará os diretórios do site em busca de configurações adicionais, apenas o que for visto pelo nginx.conf.

abestic9
fonte
- @ Andrew, graças a muitas informações úteis !, por padrão, meu /etc/nginx/nginx.confarquivo já tem include /etc/nginx/sites-enabled/*;no final. Parece que esses dois arquivos estão conversando no meu servidor e agora estou lidando com problemas específicos do Codeigniter. Você está usando codeigniter? Há alguma funkiness caminho que eu preciso para obter uma alça sobre ...
tim Peterson
Eu uso minha própria estrutura, que é bastante semelhante (embora mais primitiva) ao CodeIgniter. No momento, estou tentando obter minhas regras de regexp mod_rewrite convertidas no módulo HttpRewrite do nginx. Minha primeira grande descoberta foi superar os erros 403/404 que o nginx exibe quando configurei incorretamente o rootparâmetro. Sinta-se livre para verificar minhas perguntas, se você precisar de alguma inspiração.
abestic9
obrigado pela dica sobre como verificar suas perguntas. Eu estou pensando que eu estou entendendo mais agora, graças à configuração me no caminho ...
tim Peterson