ϵͳ£¨linux£©
»Ubuntu 14.04 TLS Nginx´î½¨¾²Ì¬Îļþ·þÎñÆ÷
´ò¿ªNginxµÄÅäÖÃÎļþ£º /etc/nginx/sites-available/default £¬ÕÒµ½ server £¬Ìí¼ÓÒÔÏÂÅäÖãº
server {# ¼àÌýÀ´×ÔËùÓÐÍøÂçÉϵÄ80¶Ë¿ÚµÄÇëÇó
listen 0.0.0.0:8080;
# Õâ¸öserverµÄ¸ùĿ¼
root /usr/share/nginx/files;
# ÏÂÃæµÄ¶«Î÷ÊÇÐèÒª×ÔÐÐÌí¼ÓµÄÅäÖÃ
location ~ \.(png|gif|jpg)$ {
root /usr/share/nginx/images; #Õâ¸ö½«Ìæ»»`server->root`ÅäÖÃ
expires 1d;
index default.jpg;
}
# ÉÏÃæ¾ÍÊÇÐèÒªÌí¼ÓµÄ¶«Î÷ÁË
# ¶ÔÓÚÂú×ãÒÔ .png/.gif/.jpg ½áβµÄurlÇëÇó£¬
# ½«Æä¸ùĿ¼¶¨ÒåΪ /usr/share/nginx/images
# ÎļþµÄÓÐЧÆÚΪһÌì
}
ÉèÖÃÍêÖ®ºóͨ¹ýÃüÁ
sudo service nginx restart
ÖØÆôNginxºóÉúЧ¡£
Èç¹ûÓöµ½Æô¶¯Ê§°Ü£¬Ê¹ÓÃÃüÁ
nginx -t
²é¿´´íÎóÐÅÏ¢
Nginx´î½phpÔËÐл·¾³PHPÔËÐл·¾³°²×°Ò»¸ö php5-fpm °ü¼´¿É£º
sudo apt-get install php5-fpm
È¥µôNginxÅäÖÃÎļþÀï¹ØÓÚphp5-fpmµÄÈýÐУ¨A/B/C£¬µ±È»Ò²Òª°üº¬X/YÁ½ÐУ©×¢ÊÍ£º
# ͬÑùÊÇÔÚserverµÄÇø¿éÀïlocation ~ .*\.php$ { # X
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock; # A
fastcgi_index index.php; # B
include fastcgi_params; # C
} # Y
¹ØÓÚAÐпÉÒÔÏÈÖ´ÐÐÃüÁ
vim /etc/php5/fpm/pool.d/www.conf
²éÕÒµ½£º
listen = /var/run/php5-fpm.sock
¿ÉÒÔµÃÖªÎÒÃǵÄÅäÖÃÊÇÕýÈ·µÄ¡£
ʹÓÃPHPÉÏ´«Îļþ ÅäÖÃ"php.ini"Îļþsudo vim /etc/php5/fpm/php.ini
ÉèÖãº
file_uploads = On
ÔÚ /usr/share/nginx Öд´½¨HTML±íµ¥ upload.php £º
<?php// ÕâÁ½ÐÐÊÇÓÃÀ´µ÷ÊÔ´íÎóµÄ£¬Ïê¼ûºóÎÄÖеı¸×¢
// ini_set('display_errors', 1);
// echo exec('whoami');
// ¸Ã·½·¨»á½«ËùÓÐÊÕµ½µÄÎļþÒÔGUIDµÄÎļþÃû´æ´¢ÆðÀ´
functionGUID(){
if (function_exists('com_create_guid') === true)
{
return trim(com_create_guid(), '{}');
}
return sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
}
$d = date('Y-m-d'); // ÈÕÆÚ¸ñʽ yyyy-MM-dd£¬ÓÃÀ´½«Í¼Æ¬Îļþ°´ÈÕÆÚ·Ö×é
$target_dir = "images/".$d.'/'; // ´æ´¢Ä¿Â¼
$uploadOk = 1; // ÅжÏÊÇ·ñͨ¹ý¼ì²âµÄ±ê¼Ç
$errorMsg = array(); // Èç¹ûÓöµ½ÉÏ´«´íÎ󣬴íÎóÐÅÏ¢Áбí
$imageFileType = pathinfo(basename($_FILES["fileToUpload"]["name"]),PATHINFO_EXTENSION); // ÎļþµÄÀ©Õ¹Ãû
$file_name_raw = GUID() . '.' . $imageFileType; // ´æ´¢µ½·þÎñÆ÷¶ËµÄΨһÎļþÃû
$target_file_unique = ''; // ´æ´¢Ö®ºóµÄÎļþÃûÏà¶Ô·¾¶
$tokens_valid = array('ABC','78C0C020-6DCA-4B97-82CD-D83FEF80331A'); // tokenÁÐ±í£¬ÓÃÀ´¿ØÖÆÈ¨ÏÞ£¬ ¿ÉÒÔ¶¨ÆÚÊÖ¶¯¸üÐÂ
// ÓÉÓÚÊǶÀÁ¢µÄÕ¾µã£¬Òò´Ë¼òµ¥µÄÓÃдËÀµÄtoken×÷ΪÉÏ´«Í¼Æ¬È¨Ï޵Ļù±¾ÑéÖ¤
if(!in_array($_POST['token'], $tokens_valid)){
array_push($errorMsg, "You are not authorized to upload images.");
$uploadOk = 0;
}
else{
$target_file_unique = $target_dir . $file_name_raw;
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check === false){array_push($errorMsg, "File is not an image.");$uploadOk = 0;
}
}
if(is_dir($target_dir)==false){
mkdir($target_dir, 0755);
}
// Îļþ´óС²»Äܳ¬¹ý50M
if ($_FILES["fileToUpload"]["size"] > 50000000) {
array_push($errorMsg, "Sorry, your file is too large. It must be smaller than 50M.");
$uploadOk = 0;
}
// ÅжÏÊÇ·ñÊÇÖ§³ÖµÄ¸ñʽ
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) {
array_push($errorMsg, "Sorry, only JPG, JPEG, PNG & GIF files are allowed.");
$uploadOk = 0;
}
// ÊÇ·ñÉÏ´«³É¹¦£¬ÓÐûÓÐÓöµ½ÄÚ²¿´íÎó
if (!move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file_unique)) {
array_push($errorMsg, "Sorry, there was an error uploading your file.");
$uploadOk = 0;
}
}
// Èç¹ûÓдíÎó£¬Ôò½«´íÎóÐÅϢȫ²¿·µ»Øµ½¿Í»§¶Ë
$errorMsgOutput = '';
foreach($errorMsg as $msg){
$errorMsgOutput = $errorMsgOutput.$msg;
}
// ·µ»ØµÄÊÇJson¸ñʽµÄÄÚÈÝ£¬±ãÓÚ¿Í»§¶Ë½âÎö
echo '{"success":"'.($uploadOk == 1 ? 'true': 'false').'","url":"'.$target_file_unique.'","errorMsg":"'.$errorMsgOutput.'"}';
?>
±¸×¢£º
Óöµ½php±¨ 500 Server internal error ´íÎóÔõô°ì£¿
ÔÚ¶ÔÓ¦µÄphpÎļþÖÐÔö¼Ó£º
ini_set('display_errors', 1);
ÔÚ.htaccessÎļþÖУ¨Èç¹ûûÓиÃÎļþÔòÊÖ¶¯´´½¨Ò»¸ö¿ÕÎļþ£©Ìí¼Ó£º
php_flag display_errors 1
Óöµ½php±¨ move_uploaded_file£ºfailed to open stream: Permission denied in /usr/share/nginx/images Ôõô°ì£¿
ÔÚ¶ÔÓ¦µÄphpÎļþÖÐÔö¼Ó£º
echo exec('whoami');
±ÈÈçÊä³öµÄÊÇ:
www-data
Ö´ÐÐÒÔÏÂÓï¾ä¸³ÓèȨÏÞ(Óï¾äÖеÄwww-dataÓ¦¸Ã¶ÔÓ¦whoamiµÄÊä³öÖµ)£º
sudo chown www-data /usr/share/nginx/images
sudo chmod 0755 /usr/share/nginx/images
½â¾ö¿çÓòµÄÎÊÌâÓÉÓÚÊǶÀÁ¢µÄ¾²Ì¬Îļþ·þÎñÆ÷£¬ËùÒԱض¨»áÓöµ½¿çÓòÉÏ´«µÄÎÊÌ⣬¿ÉÒÔÕâÑù½â¾ö£º
µÚÒ»²½£ºsudo vim /etc/nginx/conf.d/default.conf
Ìí¼ÓÒÔÏÂÅäÖãº
location ~ \.(png|gif|jpg|jpeg)$ {...
...
add_header Access-Control-Allow-Origin *; // Ìí¼ÓÕâÒ»ÐÐÅäÖÃ
...
...
} µÚ¶þ²½£º
×öNginx¸ùĿ¼ÏÂÌí¼ÓÎļþ£ºcrossdomain.xml
<?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
ÔÚä¯ÀÀÆ÷ÀïÖ±½Ó·ÃÎÊ: http://url/crossdomain.xml ·ÃÎʸÃÎļþ£¬¿ÉÒÔÕý³£·ÃÎʼ´¿É¡£
ÒÔUplodifyΪÀý£ºÃ»ÓÐÔö¼Ó¿çÓòÅäÖÃ֮ǰ£º
Èç¹ûʹÓÃuploadifyÉÏ´«Îļþ£¬¿ÉÒÔ×öChromeµÄ¿ª·¢Õß¹¤¾ßÀï¿´µ½ÒÔÏÂÐÅÏ¢£º

UploadifyÒ³ÃæÉÏ»áÏÔʾÈçÏ´íÎó£º

ÐÞ¸ÄÅäÖÃÖ®ºó£¬´ÓFiddle¿ÉÒÔ¿´µ½ÉÏ´«ÒѾ³É¹¦£¬·µ»ØÁËÕýÈ·µÄJson£º

[CentOS 6ÉÏÓÃNginx´î½¨¾²Ì¬ÎļþÕ¾µÄ·½·¨ http://www.linuxidc.com/Linux/2017-01/139196.htm ]
±¾ÎĵØÖ· £º http://www.codesec.net/Linux/2017-01/139197.htm
±¾ÎÄϵͳ£¨linux£©Ïà¹ØÊõÓï:linuxϵͳ Äñ¸çµÄlinux˽·¿²Ë linuxÃüÁî´óÈ« linux²Ù×÷ϵͳ
±¾ÎıêÌ⣺Ubuntu 14.04 TLS Nginx´î½¨¾²Ì¬Îļþ·þÎñÆ÷
±¾Õ¾Á´½Ó£ºhttp://www.codesec.net/view/520230.html
·ÖÏíÇëµã»÷£º
1.·²CodeSecTeam×ªÔØµÄÎÄÕÂ,¾ù³ö×ÔÆäËüýÌå»òÆäËû¹ÙÍø½éÉÜ,Ä¿µÄÔÚÓÚ´«µÝ¸ü¶àµÄÐÅÏ¢,²¢²»´ú±í±¾Õ¾ÔÞͬÆä¹ÛµãºÍÆäÕæÊµÐÔ¸ºÔð£»
2.×ªÔØµÄÎÄÕ½ö´ú±íÔ´´×÷Õß¹Ûµã,Óë±¾Õ¾Î޹ء£ÆäÔ´´ÐÔÒÔ¼°ÎÄÖгÂÊöÎÄ×ÖºÍÄÚÈÝδ¾±¾Õ¾Ö¤Êµ,±¾Õ¾¶Ô¸ÃÎÄÒÔ¼°ÆäÖÐÈ«²¿»òÕß²¿·ÖÄÚÈÝ¡¢ÎÄ×ÖµÄÕæÊµÐÔ¡¢ÍêÕûÐÔ¡¢¼°Ê±ÐÔ£¬²»×÷³öÈκα£Ö¤»ò³ÐÈô£»
3.Èç±¾Õ¾×ªÔØ¸åÉæ¼°°æÈ¨µÈÎÊÌâ,Çë×÷Õß¼°Ê±ÁªÏµ±¾Õ¾,ÎÒÃǻἰʱ´¦Àí¡£