1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
disabled
=
false
group_name
=
group1
bind_addr
=
172.1
.
1.1
client_bind
=
true
port
=
23000
connect_timeout
=
30
network_timeout
=
60
heart_beat_interval
=
30
stat_report_interval
=
60
base_path
=
/
data
/
fastdfs
max_connections
=
256
buff_size
=
256KB
accept_threads
=
1
work_threads
=
4
disk_rw_separated
=
true
disk_reader_threads
=
1
disk_writer_threads
=
1
sync_wait_msec
=
50
sync_interval
=
0
sync_start_time
=
00
:
00
sync_end_time
=
23
:
59
write_mark_file_freq
=
500
store_path_count
=
1
store_path0
=
/
data
/
fastdfs
subdir_count_per_path
=
256
tracker_server
=
172.1
.
1.2
:
22122
log_level
=
info
run_by_group
=
run_by_user
=
allow_hosts
=
*
file_distribute_path_mode
=
0
file_distribute_rotate_count
=
100
fsync_after_written_bytes
=
0
sync_log_buff_interval
=
10
sync_binlog_buff_interval
=
10
sync_stat_file_interval
=
300
thread_stack_size
=
512KB
upload_priority
=
10
if_alias_prefix
=
check_file_duplicate
=
0
file_signature_method
=
hash
key_namespace
=
FastDFS
keep_alive
=
0
use_access_log
=
false
rotate_access_log
=
false
access_log_rotate_time
=
00
:
00
rotate_error_log
=
false
error_log_rotate_time
=
00
:
00
rotate_access_log_size
=
0
rotate_error_log_size
=
0
log_file_keep_days
=
0
file_sync_skip_invalid_record
=
false
use_connection_pool
=
false
connection_pool_max_idle_time
=
3600
http.domain_name
=
http.server_port
=
8888
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
disabled
=
false
group_name
=
groupuser2
bind_addr
=
172.1
.
1.1
client_bind
=
true
port
=
23001
connect_timeout
=
30
network_timeout
=
60
heart_beat_interval
=
30
stat_report_interval
=
60
base_path
=
/
data
/
groupuser2
max_connections
=
256
buff_size
=
256KB
accept_threads
=
1
work_threads
=
4
disk_rw_separated
=
true
disk_reader_threads
=
1
disk_writer_threads
=
1
sync_wait_msec
=
50
sync_interval
=
0
sync_start_time
=
00
:
00
sync_end_time
=
23
:
59
write_mark_file_freq
=
500
store_path_count
=
1
store_path0
=
/
data
/
groupuser2
subdir_count_per_path
=
256
tracker_server
=
172.1
.
1.2
:
22122
log_level
=
info
run_by_group
=
run_by_user
=
allow_hosts
=
*
file_distribute_path_mode
=
0
file_distribute_rotate_count
=
100
fsync_after_written_bytes
=
0
sync_log_buff_interval
=
10
sync_binlog_buff_interval
=
10
sync_stat_file_interval
=
300
thread_stack_size
=
512KB
upload_priority
=
10
if_alias_prefix
=
check_file_duplicate
=
0
file_signature_method
=
hash
key_namespace
=
FastDFS
keep_alive
=
0
use_access_log
=
false
rotate_access_log
=
false
access_log_rotate_time
=
00
:
00
rotate_error_log
=
false
error_log_rotate_time
=
00
:
00
rotate_access_log_size
=
0
rotate_error_log_size
=
0
log_file_keep_days
=
0
file_sync_skip_invalid_record
=
false
use_connection_pool
=
false
connection_pool_max_idle_time
=
3600
http.domain_name
=
http.server_port
=
8889
|
1
2
3
4
5
6
7
|
cat config
ngx_addon_name
=
ngx_http_fastdfs_module
HTTP_MODULES
=
"$HTTP_MODULES ngx_http_fastdfs_module"
NGX_ADDON_SRCS
=
"$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
CORE_INCS
=
"$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS
=
"$CORE_LIBS -L/usr/local/lib -lfastcommon -lfdfsclient"
CFLAGS
=
"$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
cat mod_fastdfs.conf
#include http.conf
connect_timeout
=
2
network_timeout
=
30
storage_sync_file_max_delay
=
86400
tracker_server
=
172.1
.
1.2
:
22122
load_fdfs_parameters_from_tracker
=
true
log_level
=
info
log_filename
=
/
var
/
log
/
tengine
/
mod.log
url_have_group_name
=
true
response_mode
=
redirect
if_alias_prefix
=
flv_support
=
true
flv_extension
=
flv
group_count
=
5
[group1]
group_name
=
group1
storage_server_port
=
172.1
.
1.1
:
23000
store_path_count
=
1
store_path0
=
/
data
/
fastdfs
base_path
=
/
data
/
fastdfs
[group2]
group_name
=
groupuser2
storage_server_port
=
172.1
.
1.1
:
23001
store_path_count
=
1
store_path0
=
/
data
/
groupuser2
base_path
=
/
data
/
groupuser2
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
nginx
server {
listen
8080
;
server_name
172.1
.
1.1
;
access_log
/
var
/
log
/
tengine
/
test_access.log;
error_log
/
var
/
log
/
tengine
/
test_error.log;
location
/
lua {
default_type
'text/plain'
;
content_by_lua
'ngx.say("hello,lua")'
;
}
location ~
*
/
group1
/
M00
/
{
ngx_fastdfs_module;
set
$needCreateImg
0
;
if
( !
-
f $request_filename) {
set
$needCreateImg
"${needCreateImg}1"
;
}
if
($uri ~
*
"/group1/M00/(\d+)/(\d+)/([A-Za-z0-9_-]+).(gif|jpg|jpeg|png).(\d+x\d+).(gif|jpg|jpeg|png)"
) {
set
$needCreateImg
"${needCreateImg}2"
;
set
$conUri
"/$1/$2/$3.$4.$5.$6"
;
}
if
($needCreateImg
=
"012"
) {
set
$image_root
"/data/fastdfs/data"
;
set
$
file
"$image_root$conUri"
;
rewrite_by_lua '
local index
=
string.find(ngx.var.conUri,
"([0-9]+)x([0-9]+)"
);
local originalUri
=
string.sub(ngx.var.conUri,
0
, index
-
2
);
local area
=
string.sub(ngx.var.conUri, index);
index
=
string.find(area,
"([.])"
);
area
=
string.sub(area,
0
, index
-
1
);
function table.contains(table, element)
for
_, value
in
pairs(table) do
if
value
=
=
element then
return
true
end
end
return
false
end
local c
=
"/usr/local/graphicsmagick/bin/gm convert "
.. ngx.var.image_root .. originalUri ..
" -thumbnail "
.. area ..
" - "
;
local f
=
assert
(io.popen(c,
"r"
))
local s
=
assert
(f:read(
"*a"
))
f:close()
ngx.say(s) ';
}
alias
/
data
/
fastdfs
/
data
/
;
}
}
|
再搞个8081就行了。
访问400的错误
http://bbs.chinaunix.net/thread-4120027-1-1.html
java实现FastDFS实现文件上传下载实战
http://blog.csdn.net/liweizhong193516/article/details/53244134
原理http://bbs.chinaunix.net/thread-4068654-2-1.html
经过测试,发现redirect模式有问题,header already sent,所以正确还是Proxy模式。
缩略图
"/usr/local/graphicsmagick/bin/gm convert "
or
"/usr/local/ImageMagick/bin/convert "
本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1960255,如需转载请自行联系原作者