内网环境使用python快速搭建文件服务器并映射到外网

一、背景

在银行的内网环境,需要把文件传送到外网,但是走行内正式的审批流程,效率很低。目前已经申请了外网域名,通过nginx可以访问到内网的服务器,因此思考,通过这个外网域名借道,在内网linux上搭建一个外网可以访问的文件服务器。

二、环境检查

登录监听域名的nginx服务器,通过命令

python --version

可知当前服务器已经安装了python的2.7.5版本

三、步骤实施

1.修改nginx配置

进入nginx的配置文件(一般是nginx.conf),在监听域名的http模块下,新增server配置:

server {
    listen 80;
    server_name your_external_domain.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

1.其中your_external_domain.com 替换为你的外部域名,或者外部域名转发到的服务器路径
2.proxy_pass 是你的文件服务器地址,例如localhost:8080表示你在nginx的服务器启动,且启动端口是8080
3.这里的/表示根目录文件,你可以指定其它,例如/app,但是一定要保证该服务器上存在该路径,我刚开始不知道,随便设置了个/file,结果服务器/根目录下 ,根本没有这个文件夹,客户端访问就一直报错,404路径不存在;后来通过在服务器上curl http://localhost:8080/,查看根目录,nginx改成/app后才好的

2.python启动文件服务器

python的2.7.5版本通过命令

python -m SimpleHTTPServer 8080 /path/to/your/directory

启动文件服务器,
1.其中/path/to/your/directory 用来设置为文件服务器的根目录路径,可以不写。如果在启动 Python 2.7.5 的文件服务器时没有指定根目录路径,那么文件服务器将默认使用当前工作目录作为根目录。换句话说,如果没有指定路径,文件服务器将会将当前工作目录作为根目录,并提供该目录下的文件内容。
2.启动的ip和端口,要和nginx配置中指定的proxy_pass对应,我这里是对应的是http://localhost:8080

3.常见错误解决
1.404 not Found

在这里插入图片描述
通常是你访问的url,在你的nginx里面不存在,检查nginx.conf中location 的配置信息,确认访问的url可以匹配到。

2.404 Nothing matches the givens URI

在这里插入图片描述404 Nothing matches the givens URI.根据报错信息可以明确的知道,你访问的请求已经到达了文件服务器了,但是文件服务器根目录下并没有该路径,通过在文件服务器机器上curl http://localhost:8080/,(8080改成你自己文件服务器启动的端口),可以找到你的文件服务器有哪些可以访问的路径,如图示例:
在这里插入图片描述
因为浏览器访问的/ng/file 并不在图中的href值中,因此返回404,此时python的文件服务器日志,也会显示404。浏览器访问的路径一定要是文件服务器根目录下的路径,或者其子路径。

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值