最近有几个项目组的同事都在咨询nginx代理sftp的问题,那今天就写下此博文以供大家参考。献丑了!
主机名 | IP | 角色 |
---|---|---|
nginx | 192.168.10.182 | 代理服务器 |
sftp_server | 192.168.10.183 | sftp服务器 |
client | 192.168.10.185 | 测试服务器 |
登陆nginx服务器192.168.10.182安装nginx服务:
#安装依赖
yum install gcc pcre-devel openssl-devel -y
#下载nginx安装包
wget http://nginx.org/download/nginx-1.18.0.tar.gz
#解压nginx
tar –zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
#编译安装
./configure --prefix=/home/hhbank/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-stream
make && make install
仍然在nginx服务器操作:
stream {
#sftp_stream
upstream sftp_srv { #sftp_srv为组名,可自定义命名
hash $remote_addr consistent;
server 192.168.10.183:22 max_fails=3 fail_timeout=60s;
#192.168.10.183:22 为sftp服务器和端口
}
#sftp代理
server {
listen 8000;
#8000端口为sftp服务的代理端口,客户端通过nginx代理登陆sftp服务器将通过此端口。
proxy_connect_timeout 300s;
proxy_timeout 300s;
proxy_pass sftp_srv;
#sftp_srv就是上面配置的upstream sftp_srv
}
}
将以上配置复制到nginx.conf中,位置如下图所示:
在192.168.10.183sftp服务器上创建一个文件,用于客户端登陆验证
[root@sftp_server ~]# touch 183
在192.168.10.185客户端服务器通过nginx代理服务器登陆sftp_server服务器:
[root@client ~]# sftp -P8000 root@192.168.10.182 #-P8000为nginx sftp代理端口 192.168.10.182为nginx服务器
root@192.168.10.182's password:
Connected to 192.168.10.182.
sftp> ls
183 anaconda-ks.cfg fastdfs-5.05
libfastcommon-1.0.7
sftp>
登陆之后ls可以看到在183上创建的“183”文件,测试成功!