Estou testando o nginx e portando minha configuração existente do apache para o nginx. Eu consegui redirecionar a URL do codeigniter com sucesso, mas estou tendo um problema com um controlador específico cujo nome coincide com um diretório na raiz do site.
Eu consegui fazer o trabalho do meu url codeigniter como no Apache, exceto que, eu tenho um url em particular que diz http://localhost/hello
que coincide com um diretório hello
na raiz do site. O Apache não teve nenhum problema com isso. Mas nginx rotas para este diretório em vez do controlador.
Minha estrutura de reencaminhamento é a seguinte
http://host_name/incoming_url => http://host_name/index.php/incoming_url
Todos os arquivos codeigniter estão na raiz do site.
Minha configuração nginx (partes relevantes)
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
index index.php index.html index.htm;
try_files $uri $uri/ /index.php/$request_uri;
#apache rewrite rule conversion
if (!-e $request_filename){
rewrite ^(.*)/?$ /index.php?/$1 last;
}
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location ~ \.php.*$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
#fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
EDITAR:
minha configuração relevante do htaccess do apache
# Set the default file for indexes
DirectoryIndex index.php
<IfModule mod_rewrite.c>
# mod_rewrite rules
RewriteEngine on
# If the file is NOT the index.php file
RewriteCond %{REQUEST_FILENAME} !index.php
# If the file/dir is NOT real go to index
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>
Sou novo no nginx e preciso de ajuda para descobrir esse conflito de diretório com o nome do Controller. Eu percebi essa configuração de várias fontes na web, e qualquer maneira melhor de escrever minha configuração é muito apreciada.
Tags php nginx apache-2.2 rewrite codeigniter