【杂谈】如何利用Linux服务器完成你的工作 #2 配置你的网站域名

asakurasayori 发布于 2025-09-06 242 次阅读


这篇文章会详细的讲解关于Web通信和域名的基础知识!如果只是想要速通配置你的网站的话,可以直接跳到购买域名部分,如果后续感兴趣可以回过来看!

前置知识

端口

我们接下来要系统地了解端口!我们上一节中提到过需要通过特定的端口才能够访问服务器的SSH服务,具体来说,在计算机网络里,端口(Port)就是一扇“虚拟的门”,用来区分同一台电脑(或服务器)上不同的服务,如果服务器是一栋大楼,则端口就是门牌号,用来区分不同的服务。一个IP地址会被分配65535个端口,前1024个端口会分配给系统服务,是不能随便用的!

HTTP和HTTPS协议

在上一节中我们配置好了SSH服务,这实际上是一种网络协议,用于远程向计算机发送指令。我们平常访问网站的时候使用的是不同的协议,这种协议可以是http或者https。http协议规定了客户端和服务器之间该如何传输数据,速度快,但是它传输的内容都是明文,假设部署一个登录服务,那账号和密码会处于裸奔的状态,十分不安全。https协议通过SSL/TLS加密,保证数据传输安全,即使他人截获了也看不懂,所以被认为是一种高安全性的协议!因为我们需要加密,所以我们需要去申请证书和密钥,下面会讲怎么使用cloudflare申请证书!

我们还需要知道,当别人访问服务器的http服务时,会从80端口入站,而https服务会从443端口入站。在上一节当中提到的SSH服务实际上默认端口是22端口,为了安全性的考虑,我们一般来说会将SSH默认端口改掉。以后我们还会接触到更多的网络协议,例如Websocket等等

域名

域名就是互联网上用于定位和访问网站的地址,它是 IP 地址的文字化表达。它是一个网站的门户,所以请务必为自己的服务器选择一个自己喜欢的域名!

接下来会讲解域名相关的原理!首先在上一节当中说过,每一台服务器都有自己的IP地址,但是数字记忆起来十分不方便且不具有语义性,所以诞生了域名系统(DNS)。当我们在浏览器中访问网站,亦或是程序去访问一些服务,DNS服务器会把它解析成对应的IP地址,然后连接到那台服务器

我们现在来分析一下域名的构成!比如说sekai.morami.icu,或者test.mitori.cafe,顶级域名(TLD)是.icu和.cafe,常见的有.cn,.com,.org等等,二级域名就是morami和mitori,以此类推

Web服务器 Nginx

我们之前讲到http占用80端口,https占用443端口,但是我们服务器上有许多服务,占用着不同的内部端口。当接收到请求的时候怎么决定转发给哪个服务呢?这时候就要请出Nginx了,这是一个高性能的Web服务器,它不仅可以正确地把子域名正确的转发给内部服务,比如说我们1Panel开在12345端口上,当我们访问1Panel的子域名的时候,它就可以根据配置转发给12345端口

要了解Nginx的工作原理,要先介绍一下一个http请求可以包含什么!首先http请求方法有很多很多,我们最常接触到的有两个,一个是GET一个是POST。GET请求一般来说是问服务器要数据,比如说获取天气信息;而POST请求是向服务器发送数据,比如说上传游戏成绩。然后,每一个http请求会包含一个请求头(Header)和请求体(Body),Header中包含很多基础信息,比如说我们发送内容的数据格式,访问的是哪个子域名,用于身份验证的鉴权信息等等,而Body是可选的,一般来说会包含“数据”,比如说登录的时候Body中会含有我们的username和password信息

我们刚才提到了Header中会包含请求的到底是哪个子域名,这个属性在Header里叫做Host。Nginx会自动识别发送到80或者443端口的请求中的Host是什么,比如说子域名sekai要转发给10000端口,panel要转发给12345端口,那服务器就具有了暴露多个服务的能力!以后可能还会开专栏去讲解Nginx的更多功能。如果现在就想了解更多的信息,在阅读完本文完成Nginx的安装后,可以看一下Nginx极简教程

CDN

CDN 全称是 Content Delivery Network(内容分发网络)。它的作用是让网站或应用里的内容(网页、图片、视频、文件等)能够更快、更稳定地送达到用户手里。一般来说,访问网站的流程是客户端→请求发送到源服务器→直接返回内容,如果你在北京打开一个美国网站,如果没有 CDN,访问速度会十分缓慢!此时CDN便诞生了

假设一个厂商提供CDN服务,它会具有以下功能和特点:首先厂商会在世界各地部署节点,用户会从就近的节点中获取内容,减少了延迟,同时也缓解了源站服务器的压力,只需要处理少数请求。CDN还具有高可用性的特点,当一个节点出现问题,会自动切换到其他节点。最重要的是,CDN可以为服务器提供安全保障,以及提供可能的证书服务,它可以在一定程度上提供DDoS 防护、WAF(Web 应用防火墙)等服务,以及为服务器提供非常便捷的HTTPS安全证书下载!

购买域名

国内多个厂商都提供了域名相关的服务,比如阿里云,腾讯等等。笔者是在阿里云中购买的域名,我们直接进入域名搜索界面,并且注册账号。比如说我们搜索morami

这里补充一个小知识,我们购买的是二级域名,当我购买了morami.icu时,我就拥有了morami.icu和所有*.morami.icu的所有权!选择一个喜欢的域名,然后去购买域名,可以根据自己的需要调整一次性购买的时长!购买时会要求提供身份信息,以及需要等待相关机构批准,这里睡一觉耐心等待即可!

添加解析记录

等待域名批准,就可以将网站分配给服务器上的各种服务了!我们现在只安装了1Panel,所以我们先给它分配一个子域名,假设买了abc.xyz域名,我们面板可以叫做panel.abc.xyz,接下来我们需要进入公网权威解析界面,并进入我们购买的域名,点击添加记录:

我们记录类型保持A即可,主机记录填写我们刚才决定的panel,记录值填入我们的服务器公网IP地址,上一节的时候应该已经记录下来了,找不到的话可以去服务器面板或者编辑Termius主机中的IP地址一栏去获取,然后我们点击确定即可!

配置Cloudflare SSL

打开Cloudflare,注册账号,在网页的右上角从English切换成中文,然后在账户主页点击加入域的蓝色按钮,输入注册好的域名并点击继续:

然后会让用户选择计划,这里直接选择Free计划即可,然后Cloudflare会自动扫描DNS解析记录,应该会出现panel的子域名一栏,接下来会提示修改DNS服务器,我们在域名注册商的面板中的域名解析中修改DNS服务器即可,我们需要前往域名控制台,点击刚购买的网站,然后进入DNS管理/DNS修改,然后将Cloudflare给的DNS地址复制过去即可。然后我们需要等待12个小时之后再操作(也有可能会立刻生效),否则会有DNS缓存的问题,不过我们可以先接着配置下面的内容。

此时我们点击我们域名的蓝字进入Dashboard,选择DNS:

如果已经正常扫描到解析记录,可以跳过这一步!

我们点击蓝色的添加记录(Add record),然后名称处写panel,IPv4 地址填写服务器的IP地址,然后点击蓝色的保存,下侧表格中会出现panel的行!

然后我们点击右侧的编辑,暂时将代理取消,然后保存

然后我们点击左侧栏的SSL/TLS,点击Configure,在Custom SSL/TLS中选择Full (Strict) 模式并点击保存

然后我们点击 SSL/TLS 中的源服务器,点击创建证书,然后再点击创建

随后先把源证书和私钥文本框内的文本复制到本地留存,接下来打开1Panel,左侧找到系统/文件,导航栏中输入/etc/ssl/certs/,会进入系统证书的目录

此时我们需要创建两个文件,一个是pem格式的,一个是key格式的(虽然其实只和内容有关,和具体格式其实没有关系,但是这也许是约定俗成的)比如说我们把两个文件命名为123.pem和123.key,然后我们需要把源证书中的内容复制到123.pem中,将私钥中的内容复制到123.key当中,然后我们的证书就部署完成了!

配置Nginx

首先我们进入Termius,连接服务器,然后我们输入:

sudo apt update
sudo apt -y install nginx # 安装
sudo nginx -v # 如果输出版本号则安装成功 

接下来打开1Panel的面板,左侧找到系统/文件,在导航栏输入/etc/nginx,此时我们应该会成功进入nginx的文件资源管理界面:

我们首先点击左上角蓝色的创建按钮,创建conf.d文件夹(如果已经存在该文件夹就不用创建了),然后我们向下滑打开nginx.conf文件:

如上图,我们在http板块中最下面添加这两行(如果已经有了就不用添加了):

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

然后我们打开conf.d文件夹,添加一个文件,它可以叫任何*.conf,我们现在在配置1Panel,我们可以创建一个文件叫panel.conf:

然后我们在文件里粘贴这一段代码并修改:

server {
    listen 80;
    server_name panel.abc.xyz;
        # 这里改成你的面板子域名

    return 301 https://$host$request_uri;
        # 301的意思是重定向,它会把http请求转换成https请求
}

server {
    listen 443 ssl;
    server_name panel.abc.xyz;
        # 这里改成你的面板子域名

    ssl_certificate /etc/ssl/certs/123.pem;
    ssl_certificate_key /etc/ssl/certs/123.key;
        # 这两行的文件名改成在Cloudflare下载的pem和key的名称
        # 如果不记得名称可以在1Panel中到certs文件夹查看

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';

    location / {
        proxy_pass http://0.0.0.0:12345;
                # 12345这个端口号修改成1Panel的端口号
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

然后点击确认,会保存并弹窗

打开Termius,输入:

nginx -s reload # 重载nginx配置

打开Cloudflare,重新启用代理

如果不出意外的话,我们的域名、加密、Nginx都配置好了,这时我们可以尝试访问panel.abc.xyz(替换成你的域名),如果访问成功那恭喜你,学会配置网站了!

如果有其他的疑问或建议,可以在Bot群中或者通过评论提出!

此作者没有提供个人介绍。
最后更新于 2025-09-07