2015-06-21 51 views
0

我的環境:
- 後端應用與Symfony的運行2
- Nginx的1.8.0
- Centos的6.5
- PHP-FPM
配置nginx的對文件過大重定向(413)

這裏是我的nginx的conf:

server { 
    listen 443; 
    server_name demo.example.com; 
    root /usr/share/nginx/html/crowdfunding/web; 

    ssl on; 
    ssl_certificate /etc/nginx/ssl/xxxxx.crt; 
    ssl_certificate_key /etc/nginx/ssl/xxxxx.key; 

    recursive_error_pages off; 
    error_page 413 = $uri/413; 

    error_log /var/log/nginx/example_error.log; 
    access_log /var/log/nginx/example_access.log; 

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


    # PROD 
    location ~ ^/app\.php(/|$) { 
     internal; 
     fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; 
     fastcgi_split_path_info ^(.+\.php)(/.*)$; 
     fastcgi_index index.php; 
     include fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_param HTTPS on; 
     fastcgi_intercept_errors on; 
    } 
} 

我有一個上傳文件輸入頁面:http://demo.example.com/fr/member/edit ,我要的是500的最大大小ko這個圖像 當我嘗試上傳一個2Mo文件時,我在我的錯誤文件「客戶端打算髮送太大的身體」 這個錯誤,那麼你可以在網頁瀏覽器角落看到上傳運行,當它達到100%被重定向到demo.example.com/fr/member/edit 並重新啓動上傳...直到nginx的提示錯誤(可能是關於時間過程)

什麼,我想:
當nginx的檢測這樣的:「客戶端打算髮送太大的身體「,然後停止上傳文件並重定向到http://demo.example.com/fr/member/edit/413(這是一條應該進入#prod的路線) 我只是想將413重定向到我的應用程序的其他頁面,使用nginx

感謝您的幫助,並詢問我是否需要更多信息。

更新1: 這裏我的symfony 2形式

$builder->add('image', 'file', array('label' => 'general.image', 'required' => false, 'constraints' => array(
      new File(array(
       'maxSize' => '500k', 
       'mimeTypes' => array(
        'image/png', 
        'image/jpeg', 
        'image/pjpeg', 
        'image/gif', 
        'image/bmp', 
       ) 
      )) 
     ))); 

更新2: 在我的php.ini我設置:

upload_max_filesize = 500k 
post_max_size = 500k 
+0

這似乎是一個PHP知名的問題。看看這個問題:[http://stackoverflow.com/questions/2133652/how-to-gracefully-handle-files-that-exceed-phps-post-max-size](http://stackoverflow.com/questions/2133652 /如何優雅地處理文件 - 超過-psps-post-max-size) – DonCallisto

+0

我不認爲這個解決方案會停止上傳文件,或者我不明白。 – anthony

回答

0

嘗試添加以下行http或在您的案例服務器部分

client_max_body_size 2M; 

不要忘記調整你的限制。保存文件,realod nginx,它應該工作。