服务器配置实战指南:从安全加固到Nginx反代部署

服务器配置流程记录,涵盖了从安全设置、Docker安装、Nginx反向代理及SSL证书配置,到Swap空间管理的完整步骤。

Author Avatar

ghung

  ·  3 min read

安全性 #

参考VPS基础安全配置实践指南进行配置


安装docker和dockercompose #

安装 Docker #

更新软件包列表 #

sudo apt update

安装必要的软件包 #

安装一些必要的软件包,这些软件包允许 apt 通过 HTTPS 使用仓库。

sudo apt install apt-transport-https ca-certificates curl software-properties-common

添加 Docker 的官方 GPG 密钥 #

添加 Docker 的官方 GPG 密钥,以便验证下载的软件包。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

添加 Docker 仓库 #

将 Docker 的官方仓库添加到你的 apt 软件源列表中。

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

再次更新软件包列表,以包含新添加的 Docker 仓库。

sudo apt update

安装 Docker Engine #

安装Docker Engine、Docker CLI Containerd

sudo apt install docker-ce docker-ce-cli containerd.io

验证 Docker 安装 #

验证 Docker 是否成功安装,并检查 Docker 服务是否正在运行。

sudo systemctl status docker

如果 Docker 服务正在运行,应该看到类似 active (running) 的输出。

也可以运行一个简单的 Docker 镜像来验证 Docker 是否可以正常工作。

sudo docker run hello-world

应该看到一条欢迎消息,表明 Docker 安装成功。

安装 Docker ComposeV2 (可跳过) #

Docker 官方为了简化开发者的安装和使用流程,已经将 Docker Compose V2 作为一个核心插件,并将其包含在标准的 Docker Engine (docker-ce) 安装包的依赖推荐列表中。

这意味着,当上面步骤中使用 apt 安装 docker-ce 时,apt 会自动解析这些依赖关系,并将 docker-compose-plugin 一并安装。

到这一步直接使用docker compose version验证是否安装成功。

下载 Docker Compose 插件 #

从 GitHub Releases 下载 Docker Compose 插件。

sudo apt install docker-compose-plugin

验证 Docker Compose 安装 #

验证 Docker Compose 是否成功安装。

docker compose version

如果 Docker Compose 成功安装,应该看到 Docker Compose 的版本信息。

添加用户到 Docker 用户组 #

默认情况下,只有 root 用户或具有 sudo 权限的用户才能运行 Docker 命令。为了让普通用户也能运行 Docker 命令,你需要将用户添加到 docker 用户组。

sudo usermod -aG docker $USER

运行以下命令来应用用户组更改。

newgrp docker

这样就可以在不使用 sudo 的情况下运行 Docker 命令了。


配置证书和反代 #

下载证书和私钥 #

将在cf中生成的源证书的cert和key复制到.pem和.key文件中

20250717203617645

安装 nginx #

sudo apt install nginx

上传证书和私钥到服务器 #

以下操作建议提权为root进行操作和检查

  1. 使用su,输入root密码提权
su
  1. 检查 /etc/ssl/certs/etc/ssl/private目录是否存在,并将.pem和.key文件分别传到这两个目录里
sudo mv xxx.com.pem /etc/ssl/certs/
sudo mv xxx.com.key /etc/ssl/private/
  1. 设置权限
 sudo chmod 600 /etc/ssl/private/api.xxx.com.key

配置nginx #

  1. 创建 Nginx 配置文件
sudo vim /etc/nginx/sites-available/api.xxx.com
  1. 添加以下配置
server {
    listen 80;
    server_name api.xxx.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name api.xxx.com;

    ssl_certificate /etc/ssl/certs/api.xxx.com.pem;
    ssl_certificate_key /etc/ssl/private/api.xxx.com.key;
    ssl_protocols TLSv1.2 TLSv1.3; # 根据需要调整
    ssl_ciphers HIGH:!aNULL:!MD5; # 根据需要调整
    
    client_max_body_size 100m;
    
    location / {
        proxy_pass http://127.0.0.1:5005; # 替换为你的 chat2api 服务监听的地址和端口
        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;
    }
}

注意:

  • server_name:设置为 api.xxx.com
  • ssl_certificate:指向.pem证书文件的路径。
  • ssl_certificate_key:指向.key私钥文件的路径。
  • proxy_pass:设置为`服务监听的地址和端口
  • 第一个 server 块用于将 HTTP 请求重定向到 HTTPS
  1. 启用 Nginx 配置
  • 创建软链接到 sites-enabled 目录:
sudo ln -s /etc/nginx/sites-available/api.vtofun.me /etc/nginx/sites-enabled/api.vtofun.me
  • 移除默认的 Nginx 配置:
sudo rm /etc/nginx/sites-enabled/default
  • 测试 Nginx 配置:
sudo nginx -t
  • 重启 Nginx 服务:
sudo systemctl restart nginx

Swap 空间配置 #

创建swap空间 #

  1. 检查 Swap 空间: 首先,检查系统当前是否已经配置了 Swap 空间:
free -h
  1. 创建 Swap 文件: 使用 fallocate 命令创建一个 Swap 文件。例如,创建一个 2GB 的 Swap 文件:
sudo fallocate -l 2G /swapfile

或者,你也可以使用 dd 命令创建 Swap 文件:

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

这将创建一个名为 /swapfile,大小为 2GB 的文件。可以根据需要调整 count 的值来改变 Swap 文件的大小。 3. 设置 Swap 文件权限:

为了安全起见,设置 Swap 文件的权限,只允许 root 用户读写:

sudo chmod 600 /swapfile
  1. 格式化为 Swap 空间: 使用 mkswap 命令将文件格式化为 Swap 空间:
sudo mkswap /swapfile
  1. 启用 Swap 空间: 使用 swapon 命令启用 Swap 空间:
sudo swapon /swapfile
  1. 验证 Swap 空间: 再次使用 free -h 命令验证 Swap 空间是否已启用:
free -h

应该能看到 Swap 那一行显示了你刚刚配置的 Swap 空间大小。

  1. 设置开机自动挂载 Swap 空间:

为了使 Swap 空间在系统重启后仍然有效,需要将其添加到 /etc/fstab 文件中。使用文本编辑器打开该文件:

sudo vim /etc/fstab

在文件末尾添加以下一行:

/swapfile swap swap defaults 0 0
  1. 调整 Swappiness 值(可选): swappiness 参数控制内核使用 Swap 空间的积极程度。默认值通常是 60。对于服务器,你可能希望降低这个值,以便系统更倾向于使用物理内存,只有在必要时才使用 Swap 空间。

查看当前的 swappiness 值:

cat /proc/sys/vm/swappiness

临时修改 swappiness 值(例如设置为 10):

sudo sysctl vm.swappiness=10

永久修改 swappiness 值,编辑 /etc/sysctl.conf 文件:

sudo nano /etc/sysctl.conf

在文件末尾添加或修改以下行:

vm.swappiness=10

停用swap空间 #

  1. 关闭 Swap 空间: 使用 swapoff 命令关闭指定的 Swap 空间。如果你的 Swap 空间是基于文件的(如前面示例中的 /swapfile),可以使用以下命令:
sudo swapoff /swapfile

不确定 Swap 分区的路径,可以使用 swapon --showfree -h 命令查看。

  1. 删除 Swap 文件(可选):
sudo rm /swapfile
  1. 编辑 /etc/fstab 文件:

为了防止系统在重启后自动挂载 Swap 空间,需要从 /etc/fstab 文件中删除或注释掉相关的条目。

sudo vim /etc/fstab

找到包含 /swapfile 的那一行:

/swapfile swap swap defaults 0 0

删除这一行,或者在行首添加 # 将其注释掉:

#/swapfile swap swap defaults 0 0
  1. 验证 Swap 空间是否已停用:

使用 free -h 命令验证 Swap 空间是否已停用:

free -h