溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

nginx 文件 上傳 及 下載 完整版

發(fā)布時間:2020-07-27 08:43:02 來源:網(wǎng)絡 閱讀:291 作者:earl86 欄目:系統(tǒng)運維

系統(tǒng)版本:

[root@vhost8 local]# cat /etc/redhat-release?

CentOS Linux release 7.5.1804 (Core)?


用戶準備:

useradd -s /sbin/nologin -M nginx


目錄及權限準備

[root@vhost8 local]#

mkdir -p /export/share/upload/

mkdir -p /export/tmp/upload/

cd /export/tmp/upload/

mkdir 0? 1? 2? 3? 4? 5? 6? 7? 8? 9? state


chown -R nginx:nginx /export/


[root@vhost8 export]# tree? ? ? ? ? ? ? ? ? ? ? ??

.? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

├── share? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

│? ?└── upload? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

│? ? ? ?├── eclipse-cpp-2019-09-R-win32-x86_64.zip? ??

└── tmp? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? └── upload? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ├── 0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? │? ?├── 0001559170? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ├── 1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? │? ?├── 0000000001? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ├── 2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ├── 3? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ├── 4? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ├── 5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ├── 6? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ├── 7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

? ? ? ? ├── 8? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ├── 9? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? └── state? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

15 directories, 26 files

[root@vhost8 local]#?



nginx 安裝:


yum remove nginx

yum -y install gcc gcc-c++ autoconf automake gd gd-devel zlib zlib-devel openssl openssl-devel pcre-devel?

mkdir /root/thb

cd /root/thb

wget http://nginx.org/download/nginx-1.17.7.tar.gz

git clone https://github.com/hongzhidao/nginx-upload-module.git


git clone https://github.com/masterzen/nginx-upload-progress-module.git



tar -xzvf nginx-1.17.7.tar.gz?


cd nginx-1.17.7/

./configure? --with-debug --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --add-module=/root/thb/nginx-upload-module --add-module=/root/thb/nginx-upload-progress-module --with-stream --with-http_image_filter_module --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-file-aio --with-cc-opt='-Wno-format-security -Wno-unused-but-set-variable -Wno-unused-result -D NGX_HAVE_OPENSSL_MD5_H=1 -D NGX_OPENSSL_MD5=1 -D NGX_HAVE_OPENSSL_SHA1_H=1 -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2? -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'


make && make install


修改nginx配置:

cd /etc/nginx/

vi nginx.conf


[root@vhost8 nginx]# cat nginx.conf

worker_processes? 4;??

??

#error_log? logs/error.log;??

#error_log? logs/error.log? notice;??

#error_log? logs/error.log? info;??

??

#pid? ? ? ? logs/nginx.pid;??

??

??

events {??

? ? worker_connections? 1024;??

}??

??

??

http {??

? ? include? ? ? ?mime.types;??

? ? default_type? application/octet-stream;??

??

? ? #log_format? main? '$remote_addr - $remote_user [$time_local] "$request" '??

? ? #? ? ? ? ? ? ? ? ? '$status $body_bytes_sent "$http_referer" '??

? ? #? ? ? ? ? ? ? ? ? '"$http_user_agent" "$http_x_forwarded_for"';??

??

? ? #access_log? logs/access.log? main;??

??

? ? sendfile? ? ? ? on;??

? ? #tcp_nopush? ? ?on;??

??

? ? #keepalive_timeout? 0;??

? ? keepalive_timeout? 65;??

? ? upload_progress proxied 8m;??

??

? ? #gzip? on;??

? ? server {

? ? ? ? listen? ? ? ?80;

? ? ? ??

? ? ? ? auth_basic "Please input password"; #這里是驗證時的提示信息

? ? ? ? auth_basic_user_file /etc/nginx/passwd/testpwd;

? ? ? ??

? ? ? ? # upload

? ? ? ? client_max_body_size 100g; # 這個配置表示最大上傳大小,但是我沒有驗證過是否能傳 100g 的文件

? ? ? ??

? ? ? ? # Upload form should be submitted to this location

? ? ? ? location /upload {

? ? ? ? ? ? ? ? # Pass altered request body to this location

? ? ? ? ? ? ? ? upload_pass /upload.php;

? ? ? ??

? ? ? ? ? ? ? ? # 開啟resumable

? ? ? ? ? ? ? ? upload_resumable on;

? ? ? ??

? ? ? ? ? ? ? ? # Store files to this directory

? ? ? ? ? ? ? ? # The directory is hashed, subdirectories 0 1 2 3 4 5 6 7 8 9 should exist

? ? ? ? ? ? ? ? # 記得修改目錄的讀寫權限

? ? ? ? ? ? ? ? upload_store /export/tmp/upload 1;

? ? ? ? ? ? ? ? upload_state_store /export/tmp/upload/state;

? ? ? ??

? ? ? ? ? ? ? ? # Allow uploaded files to be read by all

? ? ? ? ? ? ? ? upload_store_access all:r;

? ? ? ??

? ? ? ? ? ? ? ? # Set specified fields in request body

? ? ? ? ? ? ? ? upload_set_form_field "${upload_field_name}_name" $upload_file_name;

? ? ? ? ? ? ? ? upload_set_form_field "${upload_field_name}_content_type" $upload_content_type;

? ? ? ? ? ? ? ? upload_set_form_field "${upload_field_name}_path" $upload_tmp_path;

? ? ? ??

? ? ? ? ? ? ? ? # Inform backend about hash and size of a file

? ? ? ? ? ? ? ? upload_aggregate_form_field "${upload_field_name}_md5" $upload_file_md5;

? ? ? ? ? ? ? ? upload_aggregate_form_field "${upload_field_name}_size" $upload_file_size;

? ? ? ??

? ? ? ? ? ? ? ? upload_pass_form_field "^submit$|^description$";

? ? ? ? }

? ? ? ??

? ? ? ? location ~ \.php$ {

? ? ? ? ? ?# fastcgi_pass? ?unix:/run/php-fpm/php-fpm.sock;

? ? ? ? ? ?fastcgi_pass? ?127.0.0.1:9000;

? ? ? ? ? ?fastcgi_index? index.php;

? ? ? ? ? ?# fastcgi_param? SCRIPT_FILENAME? /scripts$fastcgi_script_name;

? ? ? ? ? ?fastcgi_param? ?SCRIPT_FILENAME? ? $document_root$fastcgi_script_name;

? ? ? ??

? ? ? ? ? ?include? ? ? ? fastcgi_params;

? ? ? ? }

? ? ? ??

? ? ? ? location /myfiles {

? ? ? ? ? ? alias /export/share/upload/;? ? ? ? # 文件存放目錄,注意要以 '/' 結尾;

? ? ? ? ? ? index index.html;? ? ? ? ? ? ? ?# 如果文件存放目錄有 index.html,會跳轉到 index.html;

? ? ? ? ? ? autoindex on;? ? ? ? ? ? ? ?# 自動列出目錄下的文件;

? ? ? ? ? ? autoindex_exact_size off;? ?# 文件大小按 G、M 的格式顯示,而不是 Bytes;

? ? ? ? }

? ??

? ? }


}

[root@vhost8 local]#?


編輯上傳文件

[root@vhost8 local]#?

cd /etc/nginx/html

vi upload.php?

[root@vhost8 html]# cat upload.php?

<?php

$header_prefix = 'file';

$slots = 6;

?>

<html>

<head>

<title>Test upload</title>

</head>

<body>

<?php

if ($_POST){

? ? echo "<h3>Uploaded files:</h3>";

? ? echo "<table border=\"2\" cellpadding=\"2\">";

? ? echo "<tr><td>Name</td><td>Location</td><td>Content type</td><td>MD5</td><td>Size</td><td>Scp Command</td><td>Wget Command</tr>";

? ? for ($i=1;$i<=$slots;$i++){

? ? ? ? $key = $header_prefix.$i;

? ? ? ? if (array_key_exists($key."_name", $_POST) && array_key_exists($key."_path",$_POST)) {

? ? ? ? ? ? $tmp_name = $_POST[$key."_path"];

? ? ? ? ? ? $name = $_POST[$key."_name"];

? ? ? ? ? ? $content_type = $_POST[$key."_content_type"];

? ? ? ? ? ? $md5 = $_POST[$key."_md5"];

? ? ? ? ? ? $size = $_POST[$key."_size"];

? ? ? ? ? ? $final_path = "/export/share/upload";

? ? ? ? ? ? if (copy($tmp_name, "$final_path/$name")) {

? ? ? ? ? ? ? ? ? ? echo "SUCCESS!";

? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? echo "FAIL!";

? ? ? ? ? ? }

? ? ? ? ? ? $scp_cmd = "scp team@***:/export/share/upload/$name .";

? ? ? ? ? ? $wget_cmd = "wget http://***/files/upload/$name";

? ? ? ? ? ? echo "<tr><td>$name</td><td>$final_path</td><td>$content_type</td><td>$md5</td><td>$size</td><td>$scp_cmd</td><td>$wget_cmd</td>";

? ? ? ? }

? ? }

? ? echo "</table>";

}else{?>

<h3>Select files to upload</h3>

<form name="upload" method="POST" enctype="multipart/form-data" action="/upload">

<input type="file" name="file1"><br>

<input type="file" name="file2"><br>

<input type="file" name="file3"><br>

<input type="file" name="file4"><br>

<input type="file" name="file5"><br>

<input type="file" name="file6"><br>

<input type="submit" name="submit" value="Upload">

<input type="hidden" name="test" value="value">

</form>

<?php

}

?>

</body>

</html>

[root@vhost8 local]#?


增加nginx 網(wǎng)頁登錄驗證

yum? -y install httpd-tools

mkdir -p /etc/nginx/passwd/

htpasswd -c /etc/nginx/passwd/testpwd user1

輸入2遍user1 登錄密碼



增加nginx啟動文件

[root@vhost8 local]#?

vi /lib/systemd/system/nginx.service


[root@vhost8 local]# cat /lib/systemd/system/nginx.service

[Unit]

Description=The nginx HTTP and reverse proxy server

After=network.target remote-fs.target nss-lookup.target

?

[Service]

Type=forking

PIDFile=/run/nginx.pid

# Nginx will fail to start if /run/nginx.pid already exists but has the wrong

# SELinux context. This might happen when running `nginx -t` from the cmdline.

# https://bugzilla.redhat.com/show_bug.cgi?id=1268621

ExecStartPre=/usr/bin/rm -f /run/nginx.pid

ExecStartPre=/usr/sbin/nginx -t

ExecStart=/usr/sbin/nginx

ExecReload=/bin/kill -s HUP $MAINPID

KillSignal=SIGQUIT

TimeoutStopSec=5

KillMode=process

PrivateTmp=true

?

[Install]

WantedBy=multi-user.target

[root@vhost8 local]#?





php安裝

[root@vhost8 nginx]#?

yum -y install gcc automake autoconf libtool make

yum -y install gcc gcc-c++ glibc

yum -y install libmcrypt libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel


cd ~


wget https://museum.php.net/php5/php-5.4.7.tar.gz

tar -xzvf php-5.4.7.tar.gz?

cd php-5.4.7

./configure --prefix=/usr/local/php? --enable-fpm --with-mcrypt --enable-mbstring --disable-pdo --with-curl --disable-debug? --disable-rpath --enable-inline-optimization --with-bz2? --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli --with-gd --with-jpeg-dir

make all install

cd /usr/local/php

cp etc/php-fpm.conf.default etc/php-fpm.conf

vi etc/php-fpm.conf

修改


user = nginx??

group = nginx? ? ? ? ?


啟動php-fpm服務:

cd /usr/local/php

./sbin/php-fpm &


啟動nginx:

[root@vhost8 local]#?

systemctl enable nginx.service

systemctl start nginx

systemctl status nginx





文件瀏覽:

http://192.168.187.137/myfiles/

nginx 文件 上傳 及 下載 完整版

文件上傳:

http://192.168.187.137/upload.php

nginx 文件 上傳 及 下載 完整版

nginx 文件 上傳 及 下載 完整版


參考:

https://miopas.github.io/2018/07/24/nginx-file-server-upload/

https://blog.csdn.net/bigtree_3721/article/details/79870937

https://www.yanxurui.cc/posts/server/2017-03-21-NGINX-as-a-file-server/




向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI