返回博客列表

创建挂载目录

image-20231103170538800

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 作为目录创建 , 这并不是我们想要的结果 。

# 创建挂载目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html

复制容器文件到宿主机

# 先生成容器
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/

image-20231103161956521

删除已启动 Nginx 容器

# 直接执行docker rm nginx或者以容器id方式关闭容器
# 找到nginx对应的容器id
docker ps -a
# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx
# 删除正在运行的nginx容器
docker rm -f nginx

创建 Nginx 容器并运行

配置 SSL 证书

SSL 证书的申请参考2022 阿里云免费 SSL 证书申请全过程(图文详解)

# 数据卷中创建ssl文件夹(存放SSL证书)
cd /home/nginx
mkdir ssl
# 将申请的SSL证书上传

创建 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
命令 描述
–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 命令换行

image-20231103110403818

单行模式

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;
}

4. 代码上传

上传前端代码到 /home/nginx/html

5. References

评论