Press "Enter" to skip to content

如何配置服务器以支持 WordPress 和 Nextcloud 的外部访问

这个周末转运的 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 错误、内存限制不足以及文件上传问题。希望本文对您有所帮助!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注