这个周末转运的 4T 硬盘到了,于是把之前运行 Ubuntu Server 的迷你主机换成了 Fedora Server。没想到自带的 Cockpit WebUI 非常好用,可以管理运行虚拟机。所以启动了两个 CentOS 的虚拟机,一边学习系统管理,一边把自己的 Nextcloud 网盘扩大到 4TB。简略记录一下过程和遇到的问题。
摘要
本文详细介绍了如何配置 Fedora 服务器和 CentOS 虚拟机,以便从外部网络访问运行在其上的 WordPress 和 Nextcloud 服务。我们从网络设置、SSL 配置、反向代理配置入手,逐步解决了配置过程中可能遇到的常见问题,如 502 错误、cURL 错误、内存限制不足以及文件上传问题。通过使用 Nginx 作为反向代理、Let’s Encrypt 配置 SSL 证书,并调整 PHP 和 Web 服务器的配置,我们成功实现了服务的稳定运行和外部访问。本文还分享了如何通过 Cockpit WebUI 管理虚拟机,以及如何扩展 Nextcloud 网盘至 4TB 的实践经验。希望本文能为有类似需求的读者提供参考和帮助。
关键词:Fedora Server, CentOS, WordPress, Nextcloud, Nginx, SSL, 反向代理, 故障排除, Cockpit, 文件上传
1. 网络设置
我们有以下环境:
- Fedora 服务器:IP 地址为
192.168.0.155
,连接到路由器。 - CentOS 虚拟机 1:运行 WordPress,IP 地址为
192.168.0.170
,使用 Apache2。 - CentOS 虚拟机 2:运行 Nextcloud,IP 地址为
192.168.0.209
,使用 Apache2。
为了使这些服务可以从外部访问,我们需要进行以下配置:
- 端口转发:在路由器上设置端口转发规则,将外部流量转发到 Fedora 服务器。
- 防火墙配置:确保 Fedora 服务器和 CentOS 虚拟机的防火墙允许 HTTP(端口 80)和 HTTPS(端口 443)流量。
2. 配置反向代理
为了简化外部访问,我们可以在 Fedora 服务器上配置 Nginx 作为反向代理。反向代理将根据域名将流量转发到相应的虚拟机。
Nginx 配置示例:
server {
listen 80;
server_name breakfastberry.live;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name breakfastberry.live;
ssl_certificate /etc/letsencrypt/live/breakfastberry.live/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/breakfastberry.live/privkey.pem;
location / {
proxy_pass http://192.168.0.170:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
3. 配置 SSL
为了确保数据传输的安全性,我们使用 Let’s Encrypt 为域名配置 SSL 证书。
使用 Certbot 获取 SSL 证书:
sudo certbot --nginx -d breakfastberry.live -d www.breakfastberry.live
Certbot 会自动配置 Nginx 以使用 SSL,并设置 HTTP 到 HTTPS 的重定向。
4. 检查防火墙是否允许 HTTPS 流量
为了确保外部用户可以访问 HTTPS 服务,必须确保防火墙允许 HTTPS 流量(端口 443)。以下是检查和配置防火墙的步骤:
对于 firewalld:
检查当前防火墙规则:
sudo firewall-cmd --list-all
如果 HTTPS 服务未启用,添加 HTTPS 服务并重新加载防火墙:
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
对于 ufw:
检查当前防火墙规则:
sudo ufw status
如果端口 443 未开放,允许 HTTPS 流量并重新加载防火墙:
sudo ufw allow 443/tcp
sudo ufw reload
5. 解决常见问题
问题 1:502 Bad Gateway 错误
原因:Nginx 无法连接到后端服务器。
解决方法:
- 检查后端服务(如 Apache)是否正在运行。
- 确保防火墙允许流量通过。
- 如果使用 SELinux,启用
httpd_can_network_connect
布尔值:sudo setsebool -P httpd_can_network_connect 1
问题 2:cURL 错误 7(无法连接到服务器)
原因:服务器无法解析域名或 SSL 配置错误。
解决方法:
- 检查 DNS 记录是否正确。
- 确保 SSL 证书有效并正确配置。
- 检查防火墙是否允许 HTTPS 流量。
问题 3:内存限制不足 / 上传较大文件(大于 75MB)时报错
原因:PHP 内存限制或 Web 服务器文件上传限制过低。
解决方法:
- 增加 PHP 内存限制 编辑
php.ini
文件,增加内存限制:memory_limit = 512M upload_max_filesize = 256M post_max_size = 256M
重启 Web 服务器以应用更改:sudo systemctl restart httpd # 对于 Apache sudo systemctl restart php-fpm && sudo systemctl restart nginx # 对于 Nginx + PHP-FPM
- 增加 Nginx 文件上传限制 编辑 Nginx 配置文件,添加:
client_max_body_size 256M;
重新加载 Nginx:sudo systemctl reload nginx
6. 总结
通过以上步骤,我们成功配置了 Fedora 服务器和 CentOS 虚拟机,使其能够从外部网络访问。我们还解决了配置过程中可能遇到的常见问题,如 502 错误、cURL 错误、内存限制不足以及文件上传问题。希望本文对您有所帮助!