春节快乐!今天我们来填先前挖的坑。这次主要讲讲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, 服务器

添加新评论