建站日记(二):配置nginx和SSL证书

技术 · 2024-02-10 · 5,850 次

春节快乐!今天我们来填先前挖的坑。这次主要讲讲SSL证书和nginx的配置。

配置nginx

配置网站

/etc/nginx/conf.d目录下新建一个以.conf为后缀名的配置文件。以我的二级域名cnachen.com为例:

server {
        listen 443 ssl;
        listen [::]:443 ssl;

        server_name cnachen.com;

        root /srv/intro-next;
        index index.html index.htm;
        error_page 404 /404.html;

        location / {
                try_files $uri $uri/ =404;
        }
}

这样,就配置了nginx监听443端口(https)上对于cnachen.com的访问,并设置网站的根目录,主页,404页面。更多配置方法查询nginx的文档。

对于其他的子域名,只需要新建配置文件,将server_name改成对应的子域名,root改成对应的根目录就好。

配置http自动重定向到https

由于我们已经对全站启动了https,因此可以将所有对http端口的访问转发到https端口。

新建一个配置文件rediret-http.conf

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        return 301 https://$host$request_uri;
}

配置没有利用上的子域名自动重定向到某个网站

有的时候,我们提前在域名注册商添加了数条三级域名的解析,但是还没有用上这些域名,可以选择将它们转发到某个地方。

新建一个配置文件rediret-subdomains.conf

server {
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;

        return 301 https://cnachen.com;
}

配置SSL证书

作为学生党,能白嫖那还是要白嫖的。因此我选择使用acme.sh自动从ZeroSSL签发证书并安装。

首先安装acme.sh到~/.acme.sh,将邮箱改成你自己的:

curl https://get.acme.sh | sh -s email=<email>

然后来生成证书,由于我需要为多个子域名签发证书,所以使用acme.sh提供的DNS API来验证域名的所有权。此处以我的域名注册商NameSilo为例。

首先前往NameSilo,打开API Manager,这里的IP限制可以填入你的服务器IP,防止API Key泄露后被滥用。

Mac 2024-02-10 at 15.27.26.png

然后在服务器上执行:

export Namesilo_Key="<key>"
acme.sh --issue --dns dns_namesilo -d <example.com> -d <*.example.com> --dnssleep 900

-d参数是你想要配置的域名/子域名。由于DNS API的方式需要acme.sh添加一条TXT条目来验证域名所有权,因此需要使用--dnssleep参数来描述添加此条目后等待DNS刷新所需要的秒数,acme.sh在等待这么多秒后就会尝试后续的注册流程。

执行完上述过程后就会在~/.acme.sh的某个子目录中生成Key和Fullchain文件,此时证书已经签发,但还未配置到服务器。

对于我使用的nginx服务器,执行如下指令来安装证书:

acme.sh --install-cert -d <example.com> \
--key-file       /etc/nginx/ssl/<example.com.key>  \
--fullchain-file /etc/nginx/ssl/<fullchain.cer> \
--reloadcmd     "systemctl restart nginx"

之后,acme.sh会在证书到期时自动调用以上过程来签发并安装证书,这个过程中会调用重载指令--reloadcmd

打开你的网站再看一眼,此时应该已经能够以https访问了。

Mac 2024-02-10 at 15.38.00.png

结语

这下我们就做完了建立一个网站所需要的最基本的配置,之后就在这基础上添砖加瓦就好了。

但就如开尔文勋爵所说的「物理学的大厦已经落成,上面只有两朵乌云」,我们也有两片乌云还没有解决。至于是什么乌云,我还没有想好,想好了再来忽悠你们。

润了,大家拜拜。

Linux 服务器
  1. vcrcagfgxl 29 天前

    2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
    新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
    新车首发,新的一年,只带想赚米的人coinsrore.com
    新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
    做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
    新车上路,只带前10个人coinsrore.com
    新盘首开 新盘首开 征召客户!!!coinsrore.com
    新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
    新车即将上线 真正的项目,期待你的参与coinsrore.com
    新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
    新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com

  2. xyfgxmdkjz 29 天前

    新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!

  3. vremayoici 2024-11-20

    真好呢

  4. ovrtjhyozi 2024-09-27

    怎么收藏这篇文章?

  5. rzkzlepxyf 2024-09-23

    不错不错,我喜欢看

  6. ffuqlsbkfj 2024-09-23

    想想你的文章写的特别好

  7. uxhjiyekov 2024-09-22

    博主真是太厉害了!!!