我是 nginx 新手,尝试在 StackOverflow 上查找问题,但在论坛上找不到确切的问题。成功安装 nginx、MySQL 和 php-fpm 后,我测试了 php.info,发现运行正常。
我正在将 CodeIgniter 项目从 apache 服务器移至 nginx。我编辑了nginx.conf
包含代码的文件
server {
listen 80;
server_name 173.249.40.xxx;
# note that these lines are originally from the "location /" block
root /usr/share/nginx/html/ci;
index index.html index.htm index.php;
location /ci {
try_files $uri $uri/ /index.php;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
php.info
对于我的路径来说它工作正常,http://173.249.40.xxx/ci/info.php
但是对于 CodeIgniter 来说却不能controller name
像http://173.249.40.xxx/ci/index.php/Welcome
调用时那样工作。
CodeIgniter 应用程序路径是'/usr/share/nginx/html/ci/;'
请给我一些建议。我该如何解决它?
答案1
错误如下:
location /ci {
因此,只有以 开头的 URL 路径/ci
才会被封闭的 处理try_files
。这不是您想要的。
相反,你应该处理所有 URL,使用
location / {
答案2
我建议不要编辑该nginx.conf
文件。只需编辑gzip
并创建一个新的包含文件夹(如include /etc/nginx/sites/enabled/*.conf;
),注释掉原始包含行,并在其中创建名为 com.mywebsite.conf 的配置文件,并将其保存到我之前提到的文件夹中。
这是我过去的做法:
在我提到的新配置文件中,复制官方推荐的配置内容,如果您修改系统的变量,它应该可以起作用。
https://www.nginx.com/resources/wiki/start/topics/recipes/codeigniter/
另外,将您的网站存储在/var/www/html/mywebsite