背景
由于业务需要,要实现从一台服务器的nginx服务代理另外一台服务器部署了fastdfs的nginx服务的实现过程,具体的实现步骤记录一下。
部署环境
nginxA: docker部署的nginx
nginxB:宿主机nginx
部署步骤
nginxA :用于部署fastdfs,使用docker方式进行部署,nginx的部署文件如下:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /fastdfs/store_path/data;
ngx_fastdfs_module;
#index index.html index.htm;
}
}
docker的80 端口映射到书宿主机的8088端口上。
启动测试:
curl http://127.0.0.1:8888/group1/M00/00/00/Zx0QCGWruc-AHgBsAAAACBfWGpM051.txt
测试成功:返回niceyoo 文本内容。
nginxB:使用另外的nginx进行代理。nginx的配置文件如下:
location /fdfs/ {
proxy_pass http://localhost:8888/;
proxy_redirect default;
}
nginx的端口6080, 配置完成启动测试:
curl http://127.0.0.1:6080/fdfs/group1/M00/00/00/Zx0QCGWruc-AHgBsAAAACBfWGpM051.txt
测试失败。
查看nginx的日志
tail -f /usr/local/nginx/error.log
提示
ERROR - file: ../common/fdfs_global.c, line: 52, the format of filename "group1/M00/00/00/Zx0QCGWruc-AHgBsAAAACBfWGpM051.txt" is invalid
重新修改配置文件,修改后的配置文件如下:
location /fdfs/ {
proxy_pass http://localhost:8888/;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
加上代理header
重新测试,
curl http://127.0.0.1:6080/fdfs/group1/M00/00/00/Zx0QCGWruc-AHgBsAAAACBfWGpM051.txt
测试成功。
部署结论
如果纯端口代理,只需要端口代理就可以了。
fastdfs是文件代理,需要加上proxy_set_header的相关参数。