IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【nginx】我的docker和nginx笔记-20220219 -> 正文阅读

[系统运维]【nginx】我的docker和nginx笔记-20220219

lab1:HTTP服务器访问本地的资源

Nginx超级简单入门:https://blog.csdn.net/huangliequan/article/details/77214595
效果:访问http://localhost:8020/显示d:images/index.html

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8020;
        server_name  localhost;

        location / {
            root   d:images;
            index  index.html;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

在这里插入图片描述

lab2:反向代理

Nginx超级简单入门:https://blog.csdn.net/huangliequan/article/details/77214595
效果:当我们访问localhost:8020的时候,就相当于访问localhost:8000

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8020;
        server_name  localhost;

        location / {
            root   d:images;
            index  index.html;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

在这里插入图片描述

lab3:静态服务器

Nginx超级简单入门:https://blog.csdn.net/huangliequan/article/details/77214595
效果:文件会从不同的目录中映射(取决于请求):/data/www(放置 HTML 文件)和 /data/images(放置图片)。当接收到 http://localhost/images/example.png 的请求响应时,nginx 会返回 d:/data/images/example.png 文件。


worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;

    keepalive_timeout  65;

    server {
            listen       8020;
            server_name  localhost;
   
            location / {       
                    root d:/data/www;   
            }   
            location /images/ {
                    root d:/data/;   
            }
    }


}

在这里插入图片描述

lab4:搭建一个简易的代理服务

Nginx超级简单入门:https://blog.csdn.net/huangliequan/article/details/77214595
效果1:访问localhost:8020,nginx 相当于访问localhost:8000。
效果2:当接收到后缀为png、gif、jpg时,nginx 会映射到d:/data/images/。


worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;

    keepalive_timeout  65;

    server {
            listen       8020;
            server_name  localhost;
   
            location / {       
                    proxy_pass http://localhost:8000;
            }   
            location ~ \.(gif|jpg|png)$ {
                    root d:/data/images; 
            }
    }

}

效果1截图
在这里插入图片描述
效果2截图

在这里插入图片描述

lab5:location基本语法

nginx系列之五: 负载均衡:https://blog.csdn.net/qq_29677867/article/details/90114076
效果1:访问http://localhost:8020/index.html,显示401
效果2:访问http://localhost:8020/,显示402
效果3:访问http://localhost:8020/documents/document.html,显示403
效果4:访问http://localhost:8020/images/1.gif,显示404
效果5:访问http://localhost:8020/dddd/1.gif,显示500

= 精确匹配,如果找到匹配=号的内容,立即停止搜索,并立即处理请求(优先级最高)
区分大小写
~* 不区分大小写
^~ 只匹配字符串,不匹配正则表达式
@ 指定一个命名的location,一般用于内部重定义请求,location @name {…}
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
            listen       8020;
            server_name  localhost;
   
        location / {
           return 401;
        }
        location = / {
            return 402;
        }
        location /documents/ {
            return 403;
        }
        location ^~ /images/ {
            return 404;
        }
        location ~* \.(gif|jpg|png|jpeg)$ {
            return 500;
        }
    }

}

lab6:负载均衡

nginx系列之五: 负载均衡:https://blog.csdn.net/qq_29677867/article/details/90114076

负载均衡依赖于upstream模块来实现。upstream来定义虚拟主机static_pools,并可定义多个server(下方只显示一个server localhost:8000)。
同时注意添加proxy_set_header host $host; 这是节点服务器多虚拟主机时的关键配置。


worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    upstream static_pools {
      server localhost:8000;
    }

    server {
       listen       8020;
       server_name  localhost;
       
        location / {
        proxy_pass http://static_pools;
        proxy_set_header host $host;#在代理向后端服务器发送的http请求头中加入host字段信息,用于当后端服务器配置有多个虚拟主机时,可以识别代理的是哪个虚拟主机。这是节点服务器多虚拟主机时的关键配置    }  }}注:这里是代理服务器
       }

        location /images/ {
                root d:/data/;
        }
       
    }
}

效果:访问动态网站时的截图
在这里插入图片描述

效果:访问静态图片时的截图
在这里插入图片描述

lab7:反向代理实现使用域名访问本地项目

nginx_反向代理实现使用域名访问本地项目:https://blog.csdn.net/qq3399013670/article/details/100971283
效果:访问manage.enjoyment.com:80,可以转发给127.0.0.1:8000


worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
       listen       8020;
       server_name  manage.enjoyment.com;
       
        location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header host $host;#在代理向后端服务器发送的http请求头中加入host字段信息,用于当后端服务器配置有多个虚拟主机时,可以识别代理的是哪个虚拟主机。这是节点服务器多虚拟主机时的关键配置    }  }}注:这里是代理服务器
       }

        location /images/ {
                root d:/data/;
        }
       
    }
}

在这里插入图片描述

lab8:将docker container的nginx的文件拷贝到windows桌面

docker 文件操作:https://blog.csdn.net/henryhu712/article/details/82084160
以管理员权限来执行cp命令。docker cp :/file/path/within/container /host/path/target
效果:windows桌面可以看到docker container的nginx的文件

docker cp 30455a37c745:/ C:/Users/Z13073219/Desktop/new

在这里插入图片描述

lab9:将windows桌面txt文件拷贝到docker container中

docker 文件操作:https://blog.csdn.net/henryhu712/article/details/82084160
以管理员权限来执行cp命令。docker cp filename :/file/path/within/container
效果:docker container可以看到test.txt

docker cp C:/Users/Z13073219/Desktop/new/test.txt 30455a37c745:/ 

在这里插入图片描述

lab10:nginx安装到docker

效果:打开localhost:81,默认链接到容器的80端口,从而打开nginx默认页面。
注意-p 81:80是关键点,80不能更改,81可以更改。

docker pull nginx
docker run --name nginx-test81 -p 81:80 -d nginx

在这里插入图片描述

lab11:nginx在docker中设置反向代理成功

效果:打开宿主机的IP:端口(http://192.168.50.124:81/),就可以打开反向代理的网址(http://localhost:8000/)。
nginx反向代理–以docker容器为例:https://blog.csdn.net/weixin_43283513/article/details/112724535

关键:以下设定的反向代理无法成功。proxy_pass http://127.0.0.1:8081;
这是错误写法,使用docker容器反向代理的时候,proxy_pass中不能使用127.0.0.1和localhost,因为实际要指向宿主机的8081端口,但是这里使用127.0.0.1和localhost指向的是容器内的8081,故此无法代理。如果不使用docker而是直接安装的,可以使用127.0.0.1或localhost

server{
   listen 80;
   charset utf-8;
   server_name localhost;
 
   location / {
      proxy_pass http://localhost:8000;
      proxy_redirect default;
   }
}

在这里插入图片描述
依路径打开docker的etc/nginx/conf.d/default.conf。

server {
    listen       80;
    listen  [::]:80;
    server_name  192.168.50.124;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        proxy_pass http://172.24.192.1:8000;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

在这里插入图片描述

lab12:nginx在docker中设置反向代理(运用命令行操作)

效果:打开宿主机的IP:端口(http://192.168.50.124:81/),就可以打开反向代理的网址(http://localhost:8000/)。
很多时候没有vscode的IDE,所以必须通过命令行来启动nignx,并nginx容器中设定lab11的反向代理。
nginx反向代理–以docker容器为例:https://blog.csdn.net/weixin_43283513/article/details/112724535

关键:命令行的语句要熟悉。尽量以文件取代文件避免位置错误。以文件夹取代文件夹容易出现位置错误。

过程如下:

docker run --name nignx82 -p 82:80 -d nginx   #启动容器
docker container exec -it nignx82 /bin/bash   #进入容器内部查看结构
docker container cp nignx82:/ C:/Users/Z13073219/Desktop/nginx82   #copy容器的文件夹到指定路径
docker container cp C:/Users/Z13073219/Desktop/nginx82/etc/nginx/conf.d/default.conf nignx82:/etc/nginx/conf.d/default.conf # 将修改后的文件copy回容器里面 
docker restart nignx82  # 重启容器

其他可能用到的命令行语句

docker stop nignx82
docker start nignx82

删除文件夹:
例如:删除/etc/nginx/log目录以及其下所有文件、文件夹
rm -rf /etc/nginx/log

删除文件:
例如:强制删除/etc/nginx/log/access.log文件
rm -f /etc/nginx/log/access.log

呈现效果类似于lab11。
在这里插入图片描述

lab13:利用commit来生成属于自己的images(以lab12的nignx82为基础)

效果:lab12已在docker内部修改完default.conf,为了便于迁移,我生成一个新的images来保存这次修改。
https://blog.csdn.net/leo15561050003/article/details/71274718

docker commit -m "nginx82_modified_ip" nignx82 nignx:v2  #利用commit生成新的images
docker run --name nignx82_v2 -p 83:80 -d nignx:v2  #利用新的images来生成容器

这次生成容器后,就可以直接访问代理的网址了。
在这里插入图片描述

lab14:django项目生成属于自己的images

效果:编写dockerfile来生成属于自己的images,并成功运行。
【Docker】第一次用docker来部署django项目-20220209:https://blog.csdn.net/m0_46629123/article/details/122848644

lab15:在nginx中建立挂volume

效果:创建数据卷container-vol,并挂在nginx容器的volume_opt路径下。
06-Docker数据管理实践:https://yutian.blog.csdn.net/article/details/119707376

#建立数据卷
docker volume create container-vol

#查看数据卷位置方便挂靠到容器
docker volume ls
docker volume inspect container-vol
[
    {
        "CreatedAt": "2022-02-24T23:18:29Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/container-vol/_data",
        "Name": "container-vol",
        "Options": {},
        "Scope": "local"
    }
]

#将数据卷挂靠到容器
docker run --name nginx_vol_container -dit -p 82:80 -v container-vol:/volume_opt/vol  nginx bash

#进入容器进行查看
docker exec -it 8a16339b66e3 bin/bash
ls

最后可以看到volume_opt被挂靠进来
在这里插入图片描述

lab16:本机文件夹运用-v参数挂给container(bind mount)

效果:桌面的test_vol可以在nginx container中找到。
docker $PWD路径_Docker常用操作:https://blog.csdn.net/weixin_39681058/article/details/110088896
Docker Data Volume 之 bind mount:https://blog.csdn.net/qq_34556414/article/details/109298133

docker run -p 89:80 --name test89 -d -v C:/Users/Z13073219/Desktop/test_vol:/usr/share/nginx/html nginx

本机的文件夹:
在这里插入图片描述
容器中的文件夹:
在这里插入图片描述

lab17:通过volume来持久化保存数据

volume更像是一种对应关系,不是一个文件夹。
效果:test90(container)的html文件夹保存在container-vol2(volume)中,然后test91(container)也是挂container-vol2(volume),你就会发现html文件夹被同步过来。

  • 新建container-vol2(volume)
docker volume create container-vol
  • 将container-vol2(volume)挂到test90(container)中
docker run -p 90:80 --name test90 -d -v container-vol2:/usr/share/nginx/html nginx
  • 用vscode修改html文件夹的文件
    在这里插入图片描述
  • 将container-vol2(volume)挂到test91(container)中
docker run -p 91:80 --name test91 -d -v container-vol2:/usr/share/nginx/html nginx
  • 查看test91(container)的html文件夹是否被同步过来
    在这里插入图片描述

lab18:持久化保存django的SQLite数据库(bind mount -v)

效果:A网站维护的信息,通过bind mount存在C盘,B网站可以读取。
Docker Data Volume 之 bind mount:https://blog.csdn.net/qq_34556414/article/details/109298133

  • 建立A网站localhosts:8000,B网站localhosts:8002
docker run -p 8000:8000 --name pp_test_for_bind_mount -d -v C:/Users/Z13073219/Desktop/SQL/db.sqlite3:/code/package/db.sqlite3 pp4_slim
docker run -p 8002:8000 --name pp_test_for_bind_mount2 -d -v C:/Users/Z13073219/Desktop/SQL/db.sqlite3:/code/package/db.sqlite3 pp4_slim

在这里插入图片描述
在这里插入图片描述

  • 在A网站中修改Z13的数据。
    在这里插入图片描述

  • 在B网站上查看Z13数据是否被修改。
    在这里插入图片描述

  • 在C盘上看SQLite。
    在这里插入图片描述

lab19:保存volume的办法

最有效的办法,是通过cp来拷贝容器的内容,从而将容器中被volume挂的数据卷一并保存。

docker cp nginx_vol_container:\ C:\Users\Z13073219\Desktop\test1234

在这里插入图片描述

lab20:如何在容器启动后再挂volume(暂时找不到策略)

建议是容器启动时就挂好了volume。

lab21:volume抓文件而不是文件夹

参考lab19 运用bind mount来挂文件而不是文件夹,实现精确保存。

lab16:uWSGI

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-27 11:04:36  更:2022-02-27 11:05:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:17:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码