
1. 服务器
推荐选用阿里云、腾讯云,百度云等。
2. 域名
域名,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。
IP 地址,是 Internet 主机的作为路由寻址用的数字型标识,人不容易记忆,因而产生了域名这一种字符型标识。
通俗的说域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。这也意味着在全世界没有重复的域名。当然,此时没有域名也可以使用 IP 地址来访问你的网站。
备案
所谓的网站备案其实是网站的 ICP 备案的简称,国家相关规定如下:《互联网信息服务管理办法》指出互联网信息服务分为经营性和非经营性两类。国家对经营性互联网信息服务实行许可制度;对非经营性互联网信息服务实行备案制度。未取得许可或者未履行备案手续的,不得从事互联网信息服务。
一般来说,备案指的是域名进行备案,而不是服务器进行备案。一个网站是否备案,是取决于网站所用空间是国内还是国外的。
如果是国内主机,网站域名需要备案,才能通过域名访问到你的网站。
如果是国外主机,网站域名是不用备案的,也可以通过域名访问。
备案的流程参考首次备案流程
解析
域名解析是把域名指向网站空间 IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP 地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替 IP 地址标识站点地址。域名解析就是域名到 IP 地址的转换过程。域名的解析工作由 DNS 服务器完成。
3. Nginx 配置
创建 Nginx 配置文件
启动前需要先创建 Nginx 外部挂载的配置文件( /home/nginx/conf/nginx.conf)
之所以要先创建 , 是因为 Nginx 本身容器只存在/etc/nginx 目录 , 本身就不创建 nginx.conf 文件
当服务器和容器都不存在 nginx.conf 文件时, 执行启动命令的时候, docker 会将 nginx.conf 作为目录创建 , 这并不是我们想要的结果 。
1 2 3 4
| mkdir -p /home/nginx/conf mkdir -p /home/nginx/log mkdir -p /home/nginx/html
|
复制容器文件到宿主机
1 2 3 4 5 6 7 8
| docker run --name nginx -p 9001:80 -d nginx:1.24
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /home/nginx/
|

删除已启动 Nginx 容器
1 2 3 4 5 6 7 8 9
|
docker ps -a
docker stop nginx
docker rm nginx
docker rm -f nginx
|
创建 Nginx 容器并运行
配置 SSL 证书
SSL 证书的申请参考2022 阿里云免费 SSL 证书申请全过程(图文详解)
1 2 3 4
| cd /home/nginx mkdir ssl
|
创建 Nginx 容器并挂载数据卷
1 2 3 4 5 6 7 8 9 10
| 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
|
| 命令 |
描述 |
| –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 命令换行 |

单行模式
1
| 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 配置
1 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
| 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;
keepalive_timeout 65;
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; 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 / { 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; }
error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
include /etc/nginx/conf.d/*.conf; }
|
4. 代码上传
上传前端代码到 /home/nginx/html
5. References