nginx文件上传,下载配置
序言
Nginx的代理功能与负载均衡功能是最常被用到的,这次主要说一下文件上传转发的功能.
我相信许多人都会遇到文件上传的功能,由于现在基本上都使用的分布式部署.应用服务器和文件服务器相对独立,而且再给一些性质特殊的企业做开发时,只有应用服务对外开放,而文件的上传和下载的服务却不对外开放,这就导致我们无法直接通过外网访问文件服务,所以我就需要有一个类似网关(gateway)东西做请求的转发,这里使用的nginx
看过流程图之后,就知道只要主要的就是如何配置你的nginx,上代码
#文件上传
server{
listen 端口号 ssl;#监听的端口
server_name ;
ssl_certificate /opt/key/*.pem;#并配置证书位置
ssl_certificate_key /opt/key/*.key;#配置证书位置
ssl on;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location /upload{ #需要转发的路径
proxy_pass https://ip:port/upload/;#真实上传服务的地址与端口
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
client_max_body_size 2000M;#允许上传文件大小
}
}
以上代码使用https协议作为通信协议,保证数据安全行,如果不需要https的将端口号后面的ssl和ssl_开头的配置注释或者删除即可.
如果需要文件下载的话,这里是nginx直接做转发下载
首先是接收下载请求的nginx的配置`
server{
listen 端口号 ssl;#监听的端口号
server_name 域名或ip;
ssl_certificate /opt/key/*.pem;
ssl_certificate_key /opt/key/*.key;
ssl on;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location /{
proxy_pass https://目标ip:目标端口/;#add
}
}
以上代码使用https协议作为通信协议,保证数据安全行,如果不需要https的将端口号后面的ssl和ssl_开头的配置注释或者删除即可.
接收下载请求的nginx配置
#文件下载
server {
listen 端口号 ssl;#监听的端口号,该端口就是上面的目标端口
server_name ip; #该ip为转发下载请求的nginx服务器的地址
ssl_certificate /opt/key/*.pem; ##prosody生成的秘钥位置
ssl_certificate_key /opt/key/*.key; ## prosody生成的秘钥位置
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
root /etc/jitsi/jitsi-meet; ###jitsi-meet的根目录
index index.html index.htm;
error_page 404 /404.html;
location /{
root /DATA/www/resources;//文件目录
expires 4d;
}
}
以上配置使用https协议作为通信协议,保证数据安全行,如果不需要https的将端口号后面的ssl和ssl_开头的配置注释或者删除即可.