2016-08-19 61 views
1

我有一個應用程序,允許通過拖放同時上傳文件。此應用程序目前:同步文件上傳返回403禁止與nginx和php-fpm

  • 它有3個版本的實例本地,分段,生產。
  • 運行php 5.6nginx w/php-fpm
  • 建立在CakePhp2上。

這是我遇到的問題:

  1. 我上傳1個圖像,1成功,一切正常。
  2. 我上傳2張圖片,1次成功,第二次上傳請求返回403。
  3. 我上傳3+影像,1成功,403將返回所有其他請求,用戶退出應用程序(會話過期)

這種情況隨時有多個兼職。他們不必上傳文件。

此功能適用於除暫存服務器以外的所有服務器。本地開發機器和生產箱沒有這個問題。

文件通過拖放到頁面上傳。每個文件都通過ajax在單獨的請求中上傳。

大小並不重要小圖像失敗以及較大的圖像。

我正在尋找環境之間的錯誤匹配配置參數,但差異尚不明顯。任何想法我應該檢查?

我nginx的站點配置:

server { 
    listen  *:443 ssl; 

    server_name stagingsite.com ; 

    ssl on; 
    ssl_certificate   /site.crt; 
    ssl_certificate_key  /site.key; 
    ssl_session_cache   shared:SSL:10m; 
    ssl_session_timeout  5m; 
    ssl_protocols    TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers    "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM- SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384: ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256- SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES- CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256: AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:! MD5:!PSK:!RC4"; 
ssl_prefer_server_ciphers on; 
client_max_body_size 256m; 
index index.html index.htm index.php; 

access_log   /var/log/nginx/site.access.log; 
error_log    /var/log/nginx/site.error.log; 

root /var/www/site/webroot; 

location/{ 
    root /site/webroot; 
    try_files $uri $uri/ /index.php$is_args$args; 
    autoindex off;  
    index index.html index.htm index.php; 
} 

location ~ \.php$ { 
set $path_info $fastcgi_path_info; 
fastcgi_index index.php; 
fastcgi_split_path_info ^(.+\.php)(/.*)$; 
try_files $uri $uri/ /index.php$is_args$args; 
include /etc/nginx/fastcgi_params; 
fastcgi_pass 127.0.0.1:9000; 
fastcgi_param SCRIPT_FILENAME $request_filename; 
    } 

    sendfile off; 
} 
+0

你可以檢查你的'/ etc/nginx/nginx.conf'並查看'client_max_body_size'是什麼? – Darren

+0

我添加了在問題中設置參數的配置文件。 –

+0

您的應用程序可能會返回403響應。 – VBart

回答

0

我發現了回答我的問題。該問題居住在CakePhp2的會話配置中。自動重新生成選項設置爲true會導致應用程序爲每個請求生成一個新的會話ID。第二個請求進入後,它不知道新的會話ID。在第三次請求發出時,會話ID一起丟失。

資源,導致發現的解決方案在這裏:

How to resolve "ajax 403 error forbidden in CAKEPHP 2.x"

CakePHP 403 on AJAX request

我希望這個問題有助於該遇到這樣的事情未來的傢伙。