2014-07-10 129 views
0

我有一個PHP應用程序(Yii框架),住在Heroku上。我試圖正確設置nginx配置,以便應用程序正確運行。現在,它服務於PHP而不是靜態文件。下面是我的nginx配置以及Procfile中的命令。任何幫助表示讚賞。heroku php nginx配置

--Procfile-- 
web: vendor/bin/heroku-php-nginx -C nginx.conf 

--nginx.conf-- 
location/{ 
    try_files $uri @rewriteapp; 
} 

location @rewriteapp { 
    rewrite ^(.*)$ /myapp/public/index.php/$1 last; 
} 

location /css { 
    alias /myapp/public/css/; 
} 

location /js { 
    alias /myapp/public/js/; 
} 

location /img { 
    alias /myapp/public/img/; 
} 

location ~ \.php$ { 
    include fastcgi_params; 
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    fastcgi_pass heroku-fcgi; 
} 
+0

你能提供一個沒有被提供的靜態檔案的例子嗎?像'example.com/assets/js/jquery.min.js' ... –

+1

FYI,[nginx中的'try_files'指令文檔(鏈接)](http://nginx.org/en/docs/http /ngx_http_core_module.html#try_files) –

+0

@ALtheX感謝您提供的信息,我終於能夠從谷歌中找到它; D –

回答

1

我最終得到一切工作與下面這個配置:

location/{ 
    root /app/myapp/public; 

    try_files $uri @rewriteapp; 
} 

location @rewriteapp { 
    rewrite ^(.*)$ /myapp/public/index.php/$1 last; 
} 
+0

您不需要最後一節;那是已經在外部的默認配置。 – dzuelke

+0

@dzuelke好趕,謝謝你的反饋! –

+0

另外,您不應該像這樣定義文檔根目錄。使用以下內容: location/{ try_files $ uri @rewriteapp; } location @rewriteapp { rewrite ^(。*)$ index.php/$ 1 last; } 在你的'Procfile'中,使用'web:vendor/bin/heroku-php-nginx -C nginx.conf myapp/public /'(請參閱https://devcenter.heroku.com/articles/custom- php-settings#setting-the-document-root) – dzuelke