阿里云服务器搭建个人网站
1. 服务器
推荐选用阿里云、腾讯云,百度云等。
2. 域名
域名,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。
IP 地址,是 Internet 主机的作为路由寻址用的数字型标识,人不容易记忆,因而产生了域名这一种字符型标识。
通俗的说域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。这也意味着在全世界没有重复的域名。当然,此时没有域名也可以使用 IP 地址来访问你的网站。
备案
所谓的网站备案其实是网站的 ICP 备案的简称,国家相关规定如下:《互联网信息服务管理办法》指出互联网信息服务分为经营性和非经营性两类。国家对经营性互联网信息服务实行许可制度;对非经营性互联网信息服务实行备案制度。未取得许可或者未履行备案手续的,不得从事互联网信息服务。
一般来说,备案指的是域名进行备案,而不是服务器进行备案。一个网站是否备案,是取决于网站所用空间是国内还是国外的。 如果是国内主机,网站域名需要备案,才能通过域名访问到你的网站。 如果是国外主机,网站域名是不用备案的,也可以通过域名访问。
备案的流程参考首次备案流程 (opens new window)
解析
域名解析是把域名指向网站空间 IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP 地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替 IP 地址标识站点地址。域名解析就是域名到 IP 地址的转换过程。域名的解析工作由 DNS 服务器完成。
3. Nginx 配置
创建 Nginx 配置文件
启动前需要先创建 Nginx 外部挂载的配置文件( /home/nginx/conf/nginx.conf) 之所以要先创建 , 是因为 Nginx 本身容器只存在/etc/nginx 目录 , 本身就不创建 nginx.conf 文件 当服务器和容器都不存在 nginx.conf 文件时, 执行启动命令的时候, docker 会将 nginx.conf 作为目录创建 , 这并不是我们想要的结果 。
# 创建挂载目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html
2
3
4
复制容器文件到宿主机
# 先生成容器
docker run --name nginx -p 9001:80 -d nginx:1.24
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/
2
3
4
5
6
7
8
删除已启动 Nginx 容器
# 直接执行docker rm nginx或者以容器id方式关闭容器
# 找到nginx对应的容器id
docker ps -a
# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx
# 删除正在运行的nginx容器
docker rm -f nginx
2
3
4
5
6
7
8
9
创建 Nginx 容器并运行
配置 SSL 证书
SSL 证书的申请参考2022 阿里云免费 SSL 证书申请全过程(图文详解) (opens new window)
# 数据卷中创建ssl文件夹(存放SSL证书)
cd /home/nginx
mkdir ssl
# 将申请的SSL证书上传
2
3
4
创建 Nginx 容器并挂载数据卷
docker run \
-p 80:80 \
-p 443:443 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-v /home/nginx/ssl:/etc/nginx/ssl \
-d nginx:1.24
2
3
4
5
6
7
8
9
10
命令 | 描述 |
---|---|
–name nginx | 启动容器的名字 |
-d | 后台运行 |
-p 80:80 | 将容器的 80(后面那个) 端口映射到主机的 80(前面那个) 端口 |
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf | 挂载 nginx.conf 配置文件 |
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d | 挂载 nginx 配置文件 |
-v /home/nginx/log:/var/log/nginx | 挂载 nginx 日志文件 |
-v /home/nginx/html:/usr/share/nginx/html | 挂载 nginx 内容 |
nginx:1.24 | 本地运行的版本 |
\ | shell 命令换行 |
单行模式
docker run -p 80:80 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:1.22
修改 nginx 配置
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name www.hwzhao.cn hwzhao.cn;
rewrite /(.*) https://www.hwzhao.cn/$1 redirect;
}
server {
listen 443 ssl;
server_name www.hwzhao.cn hwzhao.cn; # 接收所有访问443端口的请求
ssl_certificate ssl/www.hwzhao.cn.pem;
ssl_certificate_key ssl/www.hwzhao.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
#配置根目录以及默认页面
# location / {
# root html
# index index.html index.htm index.php;
# }
# Blog-配置根目录以及默认页面
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
}
# location ^~ /api/ {
# proxy_pass http://47.92.99.39:8080/;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# }
#出错页面配置
error_page 500 502 503 504 /50x.html;
#/50x.html文件所在位置
location = /50x.html {
root html;
}
}
include /etc/nginx/conf.d/*.conf;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
4. 代码上传
上传前端代码到 /home/nginx/html