要在Nginx中配置FTP服务器,需要使用Nginx的ngx_http_core_module
模块和ngx_stream_core_module
模块。以下是使用Nginx配置FTP服务器的完整攻略:
- 首先,安装FTP服务器软件,例如vsftpd或proftpd。这里以vsftpd为例:
bash
sudo apt-get install vsftpd
- 然后,编辑vsftpd的配置文件
/etc/vsftpd.conf
,将以下配置项设置为如下值:
bash
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
pasv_address=192.168.1.100 # 请将此处替换为您的服务器IP地址
这些配置项将启用FTP服务器的本地用户登录、写入权限、被动模式、安全限制等功能。
- 接下来,编辑Nginx的配置文件
/etc/nginx/nginx.conf
,添加以下配置项:
```nginx
http {
server {
listen 80;
server_name ftp.example.com; # 请将此处替换为您的FTP服务器域名
location / {
proxy_pass ftp://127.0.0.1:21;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
stream {
server {
listen 21;
proxy_pass 127.0.0.1:2121;
proxy_protocol on;
}
server {
listen 2121;
proxy_pass 127.0.0.1:21;
proxy_protocol on;
}
}
```
这些配置项将启用Nginx的HTTP和Stream模块,将FTP服务器的流量转发到本地的FTP服务器端口。
- 最后,重启Nginx和vsftpd服务,使配置生效。
bash
sudo systemctl restart nginx
sudo systemctl restart vsftpd
示例1:使用TLS/SSL加密FTP连接
要使用TLS/SSL加密FTP连接,需要在vsftpd的配置文件中添加以下配置项:
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
然后,在Nginx的配置文件中添加以下配置项:
stream {
server {
listen 990 ssl;
proxy_pass 127.0.0.1:2121;
proxy_protocol on;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
}
}
这些配置项将启用TLS/SSL加密FTP连接,并将FTP服务器的流量转发到本地的FTP服务器端口。
示例2:限制FTP用户的访问权限
要限制FTP用户的访问权限,可以在vsftpd的配置文件中添加以下配置项:
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
然后,在/etc/vsftpd.chroot_list
文件中添加需要限制访问权限的FTP用户的用户名,每行一个用户名。
这些配置项将限制FTP用户只能访问其主目录,而不能访问其他目录。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nginx配置ftp - Python技术站