nginx + codeigniter 配置在 CentOS 7 上不起作用?

nginx + codeigniter 配置在 CentOS 7 上不起作用?

我是 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 namehttp://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

相关内容