δ¼ÓÐDZê

Ubuntu 14.04 TLS Nginx´î½¨¾²Ì¬Îļþ·þÎñÆ÷

×ÖÌå´óС ´ó | ÖÐ | С
[ϵͳ£¨linux£© ËùÊô·ÖÀà ϵͳ£¨linux£© | ·¢²¼Õß µêС¶þ04 | ʱ¼ä 2017 | ×÷Õß ºìÁì½í ] 0ÈËÊղصã»÷ÊÕ²Ø
Nginx´î½¨¾²Ì¬Îļþ·þÎñÆ÷ [¹Ù·½½Ì³Ì] https://www.nginx.com/resources/admin-guide/serving-static-content/

´ò¿ª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µÄ¿ª·¢Õß¹¤¾ßÀï¿´µ½ÒÔÏÂÐÅÏ¢£º


Ubuntu 14.04 TLS Nginx´î½¨¾²Ì¬Îļþ·þÎñÆ÷

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


Ubuntu 14.04 TLS Nginx´î½¨¾²Ì¬Îļþ·þÎñÆ÷

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


Ubuntu 14.04 TLS Nginx´î½¨¾²Ì¬Îļþ·þÎñÆ÷
[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²Ù×÷ϵͳ

Ö÷Ìâ: Nginx¡¢·þÎñÆ÷¡¢Ubuntu¡¢PHP¡¢Linux¡¢Chrome¡¢HTML¡¢ä¯ÀÀÆ÷¡¢
tags: php,nginx,file,Îļþ,php5,fpm,gt,04X,errorMsg,array,target,Nginx,rand
·ÖÒ³£º12
×ªÔØÇë×¢Ã÷
±¾ÎıêÌ⣺Ubuntu 14.04 TLS Nginx´î½¨¾²Ì¬Îļþ·þÎñÆ÷
±¾Õ¾Á´½Ó£ºhttp://www.codesec.net/view/520230.html
·ÖÏíÇëµã»÷£º


1.·²CodeSecTeam×ªÔØµÄÎÄÕÂ,¾ù³ö×ÔÆäËüýÌå»òÆäËû¹ÙÍø½éÉÜ,Ä¿µÄÔÚÓÚ´«µÝ¸ü¶àµÄÐÅÏ¢,²¢²»´ú±í±¾Õ¾ÔÞͬÆä¹ÛµãºÍÆäÕæÊµÐÔ¸ºÔð£»
2.×ªÔØµÄÎÄÕ½ö´ú±íÔ­´´×÷Õß¹Ûµã,Óë±¾Õ¾Î޹ء£ÆäÔ­´´ÐÔÒÔ¼°ÎÄÖгÂÊöÎÄ×ÖºÍÄÚÈÝδ¾­±¾Õ¾Ö¤Êµ,±¾Õ¾¶Ô¸ÃÎÄÒÔ¼°ÆäÖÐÈ«²¿»òÕß²¿·ÖÄÚÈÝ¡¢ÎÄ×ÖµÄÕæÊµÐÔ¡¢ÍêÕûÐÔ¡¢¼°Ê±ÐÔ£¬²»×÷³öÈκα£Ö¤»ò³ÐÈô£»
3.Èç±¾Õ¾×ªÔØ¸åÉæ¼°°æÈ¨µÈÎÊÌâ,Çë×÷Õß¼°Ê±ÁªÏµ±¾Õ¾,ÎÒÃǻἰʱ´¦Àí¡£
µÇ¼ºó¿ÉÓµÓÐÊÕ²ØÎÄÕ¡¢¹Ø×¢×÷ÕßµÈȨÏÞ...
¼¼Êõ´óÀà ¼¼Êõ´óÀà | ϵͳ£¨linux£© | ÆÀÂÛ(0) | ÔĶÁ(230)