对于各种语言常用的框架,Nginx 在官方的 Wiki 页面的 入门 部分提供了示例配置文件。具体可以参考这个页面的 Pre-canned Configurations 部分,这里列出了各种框架。
直接点击 Codeigniter 进入 Codeigniter 框架的设置页面:
官方示例中的 Nginx 配置:
server {
server_name domain.tld;
root /var/www/codeignitor;
index index.html index.php;
# set expiration of assets to MAX for caching
location ~* .(ico|css|js|gif|jpe?g|png)(?[0-9]+)?$ {
expires max;
log_not_found off;
}
location / {
# Check if a file or directory index file exists, else route it to index.php.
try_files $uri $uri/ /index.php;
}
location ~* .php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi.conf;
}
}
配置完成后,需要设置 codeIgniter 的 config.php
文件,内容如下:
$config['base_url'] = "http://domain.tld/";
$config['index_page'] = "";
$config['uri_protocol'] = "REQUEST_URI";
也可以选用下面这种配置,同样适用于生产环境。这里只需要删除 config.php
文件中的 “index.php”:
$config['base_url'] = "";
$config['index_page'] = "";
$config['uri_protocol'] = "AUTO";
server {
listen 80;
server_name localhost;
root /var/www/html/ci;
autoindex on;
index index.php;
location / {
try_files $uri $uri/ /index.php;
location = /index.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/html/ci$fastcgi_script_name;
include fastcgi_params;
}
}
location ~ .php$ {
return 444;
}
}
实际上我用的配置:
Nginx 配置:
server {
listen 80;
server_name local.cn;
root /home/szhz;
location / {
if (-f $request_filename) {
expires max;
break;
}
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
}
index index.php;
autoindex off;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
CodeIgniter 配置:
$config['base_url'] = '';
$config['index_page'] = 'index.php';
$config['uri_protocol'] = 'REQUEST_URI';