·조회수 187
在一台服务器上运行多个服务的方法
开始
作为一名独立开发者,我正在尝试通过运营多个服务来实现盈利,但AWS服务器的使用费用让我感到负担。在寻找更便宜的替代方案时,我决定尝试将家里闲置的游戏PC用作服务器。
这台PC大约是5年前花费约200万韩元购买的设备,如果要在AWS上使用相同规格,至少每月需要60万韩元以上。而且我运营的大部分服务几乎没有用户,几乎不会产生流量。那么在这台服务器上使用Docker来有效地运行多个服务是不是一个好主意呢?
构建
逐步进行可以更容易理解。首先让我们看看最基本的构建。
1. 在Ubuntu服务器上使用Docker运行多个服务
-
在Ubuntu服务器上使用Docker容器运行每个服务。
-
使用Nginx来适当地分发流量。
-
这样即使没有外部访问,也可以在公司内部网络上运行服务。
2. 使用Nginx区分服务
-
在Nginx配置文件中使用server_name来区分每个服务,这样可以将流量路由到适当的Docker容器中。
-
示例配置:
3. 设置允许外部通过IP访问
- 如果要直接从外部访问服务器,则必须将公共IP连接到服务器。
- 如果使用路由器,则需要设置端口转发以将外部流量引导到服务器。
- 示例设置: 在路由器上将80、443端口转发到服务器
4. 域名连接(使用AWS Route 53等)
- 使用AWS Route 53等服务,可以使用域名地址而不是IP地址。
- 在DNS设置中,将A记录设置为家庭网络的公共IP即可。
5. 使用CNAME处理IP更改
- 如果没有固定IP,可以使用CNAME记录,这样在IP更改时也可以轻松应对。
- 例如,将api.example.com连接到myserver.example.com(固定域名),则只需在实际IP更改时修改myserver.example.com的A记录即可。
6. 应用HTTPS(使用Let’s Encrypt)
-
使用Let’s Encrypt可以免费获得SSL证书。
-
使用Certbot设置自动更新后,可以在没有额外费用的情况下保持安全的HTTPS环境。
-
基本的SSL设置示例:
server { listen 443 ssl; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; }
结论
虽然没有涵盖所有细节设置,但我想展示利用本地PC作为服务器来节省成本是完全可行的。
AWS具有出色的可扩展性和稳定性,但初始成本较高。而利用本地PC,既可以节省成本,又可以直接运营多个服务。
这种方法适用于个人项目或小型服务运营。最初可以这样运营,随着流量增加和收入保障,再考虑扩展到像AWS这样的云环境可能是一个不错的策略。

김지식
웹, 앱 개발자입니다.