01 nginx 安装

1
sudo apt install nginx-full

test case:
访问443端口。如果看到welcome to nginx!说明nginx已经运行起来了

02 nginx 配置

Nginx的主要配置文件通常位于/etc/nginx/nginx.conf,而站点特定的配置文件则位于/etc/nginx/sites-available/目录中。你需要创建一个新的配置文件并将其链接到sites-enabled目录以启用站点。

2.1 stream 分流 443 端口

通过编辑 /etc/nginx/nginx.conf 实现对443端口的分流:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 在 /etc/nginx/nginx.conf 中添加

stream {
map $ssl_preread_server_name $name {
myproxy.mydomain.com my_proxy;
default web;
}

upstream my_proxy {
server 127.0.0.1:10443;
}

upstream web {
server 127.0.0.1:20443;
}

server {
listen 443;
proxy_pass $name;
ssl_preread on;
}
}

修改配置文件后,需要重新加载Nginx服务以使更改生效。可以使用以下命令:

1
2
nginx -t
nginx -s reload

2.2 写config文件

编辑config配置,具体过程如下:

在 sites- available 文件夹中,创建一个新的配置文件,以下仅为简易的模版:

1
2
3
4
5
6
7
8
9
10
11
server {
server_name your_domain.com;

listen 80;
listen [::]:80;

location / {
root /var/www/html;
index index.html;
}
}

将其链接到 sites-enabled 文件夹中,以启用站点:

1
sudo ln -s /etc/nginx/sites-available/mydomain.com.conf /etc/nginx/sites-enabled/

修改配置文件后,需要重新加载Nginx服务以使更改生效。可以使用以下命令:

1
2
nginx -t
nginx -s reload

2.3 Errors & Warnings & Tips

2.3.1 常见错误:403 Forbidden

静态网页配置时,报错:403 Forbidden。报错403的原因很多,如果检查路径正确,但是就是报错,那么多是因为权限问题。

对于文件权限问题,需要检查 nginx 的用户有无权限读取指定目录下的权限。一个例子:ubuntu 用户在 文件下git clone一个文件,就可能会报403错。原因在于,ubuntu
文件夹的权限是750,data-www 用户没有读取文件的权限。

想要解决问题就按需修改权限,但是小心乱改后引发更大的错误,慎重!

1
2
3
# 修改权限(Owner/Group/Others)
chmod 755 [file]
chmod -R 755 [folder]

2.3.2

03 certbot 安装

web link: https://certbot.eff.org/
web link for nginx: https://certbot.eff.org/instructions?ws=nginx&os=ubuntufocal

1
2
3
apt install certbot

apt install python3-certbot-nginx

testcase:
certbot --version, 看到certbot的版本

04 nginx 通过 certbot 签发证书

4.1 自动签发证书

1
certbot --nginx

使用上述命令签发证书时,需要注意域名解析的IP地址就是该服务器的IP地址。
建议:

  1. 确保域名成功解析到服务器ip,并确保你的服务器80端口没有被占用。
  2. 你可能需要到服务器控制台检查80和443端口是否开放。

4.2 更新证书