2016-12-27 142 views
0

我想配置nginx的,并具有以下配置:NGINX服务器配置

/etc/nginx/sites-enabled/default

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是在/ var/WWW/firstProj/web文件/由symfony创建的文件夹,无需进一步修改。

firstProj是我目前工作的一个symfony项目,什么我不明白这里是:

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

    Oops! An Error Occurred The server returned a "500 Internal Server Error".

  2. 为什么当我访问www.firstproj.dev/app_dev.php时,一切正常,我也可以访问我的路线(例如:www.firstproj.dev/app_dev.php/homepage完美无缺,并返回我的行动的预期回应控制器)

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

我希望它与www.firstproj.dev/homepage没有app_dev.php在那里工作,但我不能让这样的。 此外,如果我访问

http://localhost

我得到:

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org. Commercial support is available at nginx.com.

Thank you for using nginx.

我道歉,如果这是一个相当愚蠢的问题,但我是一个初学者就服务器的配置有关。

谢谢!

+0

有你在等加firstproj.dev和www.firstproj.dev /主机? –

+0

是的!它们都在/ etc/hosts文件中 –

回答

0

所以你发现你的app_dev.php工程,但app.php不起作用?

我过去发生过这种情况,还有一些值得检查的事情。

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

  2. 您是否制作了cachelogs目录prod或只为dev?他们是否可写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

+0

1.如果我将app_dev的内容复制到应用程序中,则它的工作原理是 2.它们都存在并可通过www-data 写入3. project_error.log为空 4。我做了,没有出现 !!! BAM 这是它 5.当我想清楚,我得到这个错误的高速缓存: [Symfony的\分量\ CONFIG \异常\ FileLoaderLoadException] 无法加载资源... 所以我使用了第三方一束仅在开发模式下在AppKernel中注册。不在prod模式,所以这是问题。 非常感谢! 问题解决了:) –