我在用网页fsd,一个轻量级的 HTTP 守护进程,用于提供静态内容,如下http://localhost:80
所示:
sudo webfsd -R ~/Documents/www/ -p 80 -f index.html
但是我每次都必须从命令行运行它。我猜我不能将sudo
命令添加到启动程序中。那么,我怎样才能让它运行而不必每次都调用它呢?
(我会更喜欢让它在启动时启动,无需登录即可访问,即使这意味着我需要移动文件的位置。但当我登录时启动是一个可以接受的二等奖。如果这有区别的话,我想稍后尝试使用 HTTPS。)
答案1
我的第一个想法是一个简单的新贵脚本。/etc/init/webfs.conf
:
description "WebFS server"
start on (local-filesystems and net-device-up)
respawn
exec webfsd -F -p 80 -u d3vid -g d3vid /home/d3vid/Documents/www/ -f index.html
和-u
参数-g
是真的重要。绑定端口后,这些会放弃 root 权限...这意味着没有可以以 root 身份运行的可访问网络的进程可以利用。
另一个想法是,在高端口(>1024)上运行它,按照你喜欢的方式自动启动它...然后使用真实的服务器从端口 80 进行反向代理(nginx 是这里常见的轻量级工具)...或者只使用 iptables 重定向。
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 10010 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 10010
webfs 的优点是绝不以 root 身份运行...但之后您只需要在iptable
每次启动时以 root 身份运行命令。 摇摆不定,回旋无定。
我认为总的来说,如果您不将服务器直接暴露在互联网上,那么第一种方式可能足够安全。
但是如果您要进一步操作,请转储 WebFS 并使用nginx
...
- 它可以完成 WebFS 的所有功能(甚至更多)
- 使用简单
- 效率超乎想象
- 它的 SSL 有详尽的文档
- 最重要的是,包括 Canonical 在内的很多人都对 nginx 的安全性感兴趣,因此您可以快速获得更新(在处理面向 Web 的事情时至关重要)
为了让您了解“高效”的含义,我有一个托管大约 20 个域的网络服务器,其中一些域的流量相当大。nginx 的四个工作进程总共占用 15MB 的 RAM,并且没有可观察到的 CPU 时间。这太疯狂了。