2016-12-27 17 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模式,所以這是問題。 非常感謝! 問題解決了:) –