NGINX服务器配置

时间:2016-12-27 20:48:39

标签: php symfony nginx

我正在尝试配置nginx并在以下配置中进行以下配置:

  

的/ etc / nginx的/ /默认启用位点-

server {
    server_name firstproj.dev www.firstproj.dev;
    root /var/www/firstProj/web;

    location / {
        try_files $uri /app.php$is_args$args;
    }

    location ~ ^/(app_dev|config)\.php(/|$) {
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
    }

    location ~ ^/app\.php(/|$) {
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        internal;
    }

    location ~ \.php$ {
      return 404;
    }

    error_log /var/log/nginx/project_error.log;
    access_log /var/log/nginx/project_access.log;
}

其中app.php和app_dev.php都是由symfony创建的/ var / www / firstProj / web /文件夹中的文件,没有进一步修改。

firstProj是我目前正在研究的symfony项目,我在这里无法理解的是:

  1. 为什么当我访问www.firstproj.dev时我得到了

      

    糟糕!发生错误服务器返回“500内部服务器错误”。

  2. 为什么当我访问www.firstproj.dev/app_dev.php时一切正常,我也可以访问我的路线(例如:www.firstproj.dev/app_dev.php/homepage工作正常并返回预期来自我控制器中的动作的响应)

  3. 为什么我访问www.firstproj.dev/app.php时出现404错误。

  4. 我希望它可以与www.firstproj.dev/homepage一起使用,但没有app_dev.php,但我不能让它以这种方式工作。 此外,如果我访问

    http://localhost

    我明白了:

      

    欢迎来到nginx!

         

    如果您看到此页面,则表示已成功安装nginx Web服务器   和工作。需要进一步配置。

         

    有关在线文档和支持,请参阅nginx.org。   nginx.com提供商业支持。

         

    感谢您使用nginx。

    如果这是一个相当愚蠢的问题我很抱歉,但就服务器配置而言,我是初学者。

    谢谢!

1 个答案:

答案 0 :(得分:0)

因此,您发现app_dev.php有效但app.php不起作用?

过去我曾经发生这种情况,有一些事情值得一试。

  1. app_dev.php的内容复制到app.php,看看www.firstproj.dev/app.phpwww.firstproj.dev是否有效。如果它有效,那么你知道它不是NGINX的问题,而是你的Symfony安装程序的问题。

  2. 您是否为cachelogs创建了proddev目录?它们是否可以www-data写入?

  3. 您是否检查了/var/log/nginx/project_error.log以查看在尝试访问app.php时是否出现任何错误?

  4. app.php文件的顶部添加行error_reporting(E_ALL);。现在,当您尝试访问生产版本时,您是否看到任何错误?

  5. 尝试清除缓存以进行生产。根据您的服务器设置方式(您是否使用ACLCHOWN/CHMOD作为缓存/日志文件?)您可以运行类似sudo su -u www-data php bin/console cache:clear --env prod

  6. 的内容