【问题标题】:Nginx with angular and codeigniter applications in subfoldersNginx 在子文件夹中带有 angular 和 codeigniter 应用程序
【发布时间】:2016-12-29 06:28:35
【问题描述】:

我正在尝试创建一个在后端使用 codeigniter 并在前端使用 angularjs 的网站。 对于后端,我使用 nginx 作为服务器。 目前我在正确配置 nginx 时遇到问题。我想要实现的是将 codeigniter 和 angularjs 应用程序放在单独的文件夹中。我想要的是访问如下

  • 来自 my_website.com/api 的 codeigniter
  • 来自 my_website.com 的角度

就文件夹而言,我想将它们保留在:

  • codeigniter:/var/www/html/api
  • 角度:/var/www/html/angular

到目前为止,我已经设法让它在同一个文件夹中工作。所以现在我在 /var/www/html 中有 codeigniter 并且 angular 文件夹在同一个目录中。这样我就可以从 my_website.com/ 访问 codeigniter 并从 my_website.com/app 访问 angular,这不是我想要的。

我为 nginx /etc/nginx/sites-available/default 文件尝试了多种不同的设置,但每次都有一些问题。我所拥有的最远的是将它们放在单独的文件夹中,但 codeigniter 仅适用于 default_controller,我无法访问任何其他文件。 这是当前的工作配置。

server {
    listen 80;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/html;

    server_name localhost;
    index index.php index.htm index.html;

    location /app/ {
        root /var/www/html/angular; 
        try_files $uri/ $uri index.html =404;
    }

    location / {
        try_files $uri $uri/ /index.php;
        #index index.html;
    }

    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
        include fastcgi_params;
    }
}

这是一个简单的配置,我只是尝试从演示子文件夹运行 codeigniter,

server {
        listen       80;
        server_name  localhost;
        root   /var/www/html;
        autoindex on;
        index index.php;

        location / {

            #try_files $uri $uri/ /index.php;
                try_files $uri $uri/ /index.php$request_uri;
            location = /demo/index.php {
                try_files $uri $uri/ /index.php$request_uri;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

                fastcgi_param  SCRIPT_FILENAME /var/www/html/demo$fastcgi_script_name;
                include        fastcgi_params;
            }
        }

        location ~ \.php$ {
            return 444;
        }


}

这里 my_website.com/demo/index.php 工作正常,但 my_website.com/demo/index.php/welcome 显示 500 Internal Server Error

我希望我说清楚。 我尝试了很多在网上找到的不同配置,但我总是遇到一些麻烦。你们中的任何人都可以为这个问题提出一些简单的解决方案吗?

谢谢, 马特乌斯

【问题讨论】:

  • 您的日志中有什么错误?
  • 在哪里可以查看该日志?
  • 默认应该在/var/log/nginx/*.log下,也可以设置error_log指令重定向到特定文件
  • @FrédéricHenri 感谢您提供检查日志的线索。我终于设法使其与link 的解决方案一起工作,我想在我做错之前,但日志文件有很大帮助。所以现在我有代码点火器以我想要的方式工作。我将尝试在子文件夹中使用 angular,希望它也能正常工作。谢谢。

标签: php codeigniter nginx url-rewriting vagrant


【解决方案1】:

我终于设法让它按我想要的方式工作。我已使用此解决方案link 使其与子目录中的 codeigniter 一起工作,这是主要问题。这是我的配置:

server {
    listen       80;
    server_name  localhost;
    root   /var/www/html;
    autoindex on;
    index index.html;

    location / {
        root /var/www/html/angular; 
        try_files $uri/ $uri index.html =404;
    }

    location /api/ {
            alias  /var/www/html/api/;
            try_files $uri $uri/ /api/index.php;

            location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_index   index.php;
                fastcgi_pass    unix:/var/run/php/php7.0-fpm.sock;
                include /etc/nginx/fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME $request_filename;
        }
    }

    location ~ \.php$ {
        return 444;
    }
}

感谢@FrédéricHenri 建议使用/var/log/nginx/*.log 下的日志文件,这有助于跟踪nginx 重定向请求的方式。另外,我遇​​到的是网络浏览器正在缓存网站(我认为这是正在发生的事情),所以当我对配置文件进行一些更改时,这给了我错误的结果。

【讨论】:

    猜你喜欢
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多