NGINX + Apache2 + codeigniter-子路径不起作用

时间:2018-12-04 16:41:56

标签: php codeigniter nginx apache2

我目前在我的DigitalOcean的Ubuntu服务器上启动并运行了2个PHP应用程序。还有第三个,但它不起作用。所有这三个PHP项目都配置为在不同的端口上运行。 同时,使用NGINX服务器,我已经配置了反向代理。配置如下。

/etc/nginx/nginix.conf

server {
        listen          80;
        server_name     IP;
        location / {
              #Assinged to a python project
        }
        location /php_project_1 {
            proxy_pass http://IP:5002;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header HOST $http_host;
        }

        location /php_project_2 {
            proxy_pass http://IP:5003;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header HOST $http_host;
        }
        location /php_project_3 {
            proxy_pass http://IP:5004;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header HOST $http_host;

        }
    }

我还在 / etc / apache2 / sites-available 中创建了3个配置文件。

问题

php_project_1和php_project_2是使用核心PHP开发的,它们可以正常工作。

php_project_3是使用 codeigniter 开发的。那是导致我麻烦的项目。在该项目中,我在 /application/config/config.php 下修改了$config['base_url'],并将值输入为 http://IP/php_project_3

但是,当我点击URL http://IP/php_project_3时,我得到一个空白页。 我还检查了 / var / logs / apache2 / var / logs / nginx ,但是error.log文件没有显示与我的请求相对应的任何消息。

同时,我可以使用http://IP/php_project_1http://IP/php_project_2

成功运行其他两个应用程序。

我不知道如何解决此问题。

2 个答案:

答案 0 :(得分:0)

$config['base_url']的值应以斜杠结尾,因此请尝试

$config['base_url'] = 'http://IP/php_project_3/';

如果以上内容仍然产生空白,并且在/application/logs/的任何日志文件中都没有发现错误,则您的一个脚本文件上可能有BOM。在开始<?php之前,我在脚本的开头就遇到了它们。从控制器开始。删除该开头的行,然后重新输入-测试,对控制器使用的所有“查看”文件重复,直到找到违规者。

您可以通过将CodeIgniter的index.php临时替换为另一个具有相同名称但带有简单文本输出的文件(即

)来查看是否将代理传递到正确的目录中
<?php
echo "Hello World"; 

很显然,如果看到文本,则问题出在服务器配置问题之外。

答案 1 :(得分:0)

在trafik后面运行codeigniter时遇到了类似的问题。拔掉所有头发后,我意识到这是因为traefik实例的IP必须包含在auth.conf文件中。