对于各种语言常用的框架,Nginx 在官方的 页面的 部分提供了示例配置文件。具体可以参考这个页面的 Pre-canned Configurations 部分,这里列出了各种框架。
直接点击 进入 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';