Nginx grid-fs反向代理访问Mongo中的文件
首先对于一个新的centos系统当然是先装一个输入法(个人习惯)
1、安装中文拼音输入法:
yum install ibus ibus-pinyin
安装pcre:
*如果没有gcc gcc-c++编译器,需要用这个命令安装:yum install -y gcc gcc-c++
安装pcre的命令:./configure --prefix=/usr/local/pcre-8.38
make
make install
安装SSL:
./config --prefix=/usr/local/openssl-1.0.2
make
make install
安装zlib:
./configure --prefix=/usr/local/zlib-1.2.8
make
make install
2、安装nginx以及gridfs模块:
1)、安装git:yum -y install git
2)、在git上克隆nginx-gridfs的源代码:git clone https://github.com/rc3097/rc3097-nginx-gridfs
3)、安装带gridfs模块的nginx,安装时才发现,pcre、ssl、zlib不需要安装,配置时其实只需要源码路径,否则报错,命令如下:
./configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.38 --with-openssl=../openssl-1.0.2g --with-zlib=../zlib-1.2.8 --with-http_stub_status_module --add-module=../rc3097-nginx-gridfs
4)、将nginx加入系统环境变量:
在/etc/profile最后插入
export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin
保存,然后执行source /etc/profile
在控制台上输入nginx -v出现版本信息则安装成功。
3、gridfs的配置:
配置的语法说明:
gridfs db_name [root_collection] [field] [type] [user] [pass];
mongo mongodb url;
[root_collection]: 选择collection,如root_collection=blog,mongod就会去 找blog.files与blog.chunks两个块,默认是fs
[field]:查询字段,保证mongdb里有这个字段名,支持_id, filename, 可省略, 默认是_id
[type]:解释field的数据类型,支持objectid, int, string, 可省略, 默认是int
[user]:用户名, 可省略
[pass]:密码, 可省略
配置示例:
(1)指定db为my_app,其他均为默认,默认服务器为本地
location /gridfs/ { gridfs my_app; }
(2)location /gridfs/ {
gridfs my_app field=filename type=string;
mongo 127.0.0.1:27017;
}
(3)用于副本集
location /gridfs/ {
gridfs my_app field=filename type=string;
mongo "foo"
10.7.2.27:27017
10.7.2.28:27017;
}
(4)完整配置
location /gridfs/ {
gridfs my_app
root_collection=pics
field=_id
type=int
user=foo
pass=bar;
mongo 127.0.0.1:27017;
}
4、启动、停止nginx
在启动前关闭系统防火墙,service iptables stop,否则会导致其他客户机无法访问80端口的服务(也可以配置iptables,自己去查)
启动:nginx
停止:使用ps -ef|grep nginx查看nginx的进程,然后kill掉主进程id
5、演示
我的mongo数据库安装在本机,nginx安装在虚拟机,在本地浏览器中输入访问资源的url就可以,这里以图片举例:
数据库中存放了一张图片:

url后面就是图片在数据库中对应的_id,浏览器会马上显示这张图片:

6、注意点
(1)在测试配置时要记住不要将nginx的文件过期缓存时间配置开启了,最好是在配置好服务器以后再做这个工作,否则很容易造成配置错误的假象。
(2)要保证系统启动过程中,MongoDB比nginx先启动,否则nginx-gridfs初始化的时候不能正确链接MOngoDB数据库。
1、安装中文拼音输入法:
yum install ibus ibus-pinyin
安装pcre:
*如果没有gcc gcc-c++编译器,需要用这个命令安装:yum install -y gcc gcc-c++
安装pcre的命令:./configure --prefix=/usr/local/pcre-8.38
make
make install
安装SSL:
./config --prefix=/usr/local/openssl-1.0.2
make
make install
安装zlib:
./configure --prefix=/usr/local/zlib-1.2.8
make
make install
2、安装nginx以及gridfs模块:
1)、安装git:yum -y install git
2)、在git上克隆nginx-gridfs的源代码:git clone https://github.com/rc3097/rc3097-nginx-gridfs
3)、安装带gridfs模块的nginx,安装时才发现,pcre、ssl、zlib不需要安装,配置时其实只需要源码路径,否则报错,命令如下:
./configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.38 --with-openssl=../openssl-1.0.2g --with-zlib=../zlib-1.2.8 --with-http_stub_status_module --add-module=../rc3097-nginx-gridfs
4)、将nginx加入系统环境变量:
在/etc/profile最后插入
export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin
保存,然后执行source /etc/profile
在控制台上输入nginx -v出现版本信息则安装成功。
3、gridfs的配置:
配置的语法说明:
gridfs db_name [root_collection] [field] [type] [user] [pass];
mongo mongodb url;
[root_collection]: 选择collection,如root_collection=blog,mongod就会去 找blog.files与blog.chunks两个块,默认是fs
[field]:查询字段,保证mongdb里有这个字段名,支持_id, filename, 可省略, 默认是_id
[type]:解释field的数据类型,支持objectid, int, string, 可省略, 默认是int
[user]:用户名, 可省略
[pass]:密码, 可省略
配置示例:
(1)指定db为my_app,其他均为默认,默认服务器为本地
location /gridfs/ { gridfs my_app; }
(2)location /gridfs/ {
gridfs my_app field=filename type=string;
mongo 127.0.0.1:27017;
}
(3)用于副本集
location /gridfs/ {
gridfs my_app field=filename type=string;
mongo "foo"
10.7.2.27:27017
10.7.2.28:27017;
}
(4)完整配置
location /gridfs/ {
gridfs my_app
root_collection=pics
field=_id
type=int
user=foo
pass=bar;
mongo 127.0.0.1:27017;
}
4、启动、停止nginx
在启动前关闭系统防火墙,service iptables stop,否则会导致其他客户机无法访问80端口的服务(也可以配置iptables,自己去查)
启动:nginx
停止:使用ps -ef|grep nginx查看nginx的进程,然后kill掉主进程id
5、演示
我的mongo数据库安装在本机,nginx安装在虚拟机,在本地浏览器中输入访问资源的url就可以,这里以图片举例:
数据库中存放了一张图片:
url后面就是图片在数据库中对应的_id,浏览器会马上显示这张图片:
6、注意点
(1)在测试配置时要记住不要将nginx的文件过期缓存时间配置开启了,最好是在配置好服务器以后再做这个工作,否则很容易造成配置错误的假象。
(2)要保证系统启动过程中,MongoDB比nginx先启动,否则nginx-gridfs初始化的时候不能正确链接MOngoDB数据库。