nginx_logs和 nginx_web目录

发布时间:2025-06-24 08:36:51  作者:北方职教升学中心  阅读量:951


安装Docker

下载Docker Desktop:

- 访问[Docker官网](https://www.docker.com/products/docker-desktop)下载Docker Desktop for Mac。

Nginx部署Web应用

      • 学习资料参考
    • 一、以下是一些常用的方法和工具:

      命令行工具
      • 使用**** **df****du******命令
        • df -h:查看磁盘使用情况,包括Docker存储路径所在的分区。
          多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考):

          首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。

        • -d nginx: 设置容器在在后台一直运行。以下是一个示例:

          假设你想创建以下目录结构:

          ~/nginx_conf~/nginx_logs~/nginx_web

          你可以使用以下命令:

          mkdir-p/root/nginx_conf /root/nginx_logs /root/nginx_web

          这条命令会创建 /root目录(如果它还不存在),然后在其中分别创建 nginx_conf、使用Nginx部署Web应用

          • 拉取 Nginx 镜像
          • 创建挂载目录
          • 创建容器并挂载目录
            • 创建并启动容器:
            • 复制配置文件到宿主机:
            • 删除容器并重新启动:
            • 重新启动容器并挂载目录:
          • 自定义修改配置文件过程
            • 方法一:只修改主配置文件nginx.conf
            • 方法二:进入挂载的配置文件夹 `~/nginx_conf/conf.d` 下,修改 `default.conf` 文件
            • 方法三:新建一个以 `.conf` 为后缀的配置文件(例如 `my-web-app.conf`).
            • (附加)nginx location配置详细说明
            • nginx的其他配置信息介绍
              • 防盗链
              • 禁止访问某个目录
              • 附:一些可用的全局变量
          • 如何检查docker挂载信息是否正确
          • 上传 Web 文件到挂载目录中
          • 重启 Nginx 容器
          • 访问网页测试
        • 四、例如:

          mkdir-p~/nginx_conf ~/nginx_logs ~/nginx_web

          这里的 ~符号代表当前用户的主目录,通常是 /Users/your_username

        • 文件权限:确保Docker容器有权限访问挂载的本地目录和文件。

        自定义修改配置文件过程

        [注意踩坑]mac环境下使用docker安装nginx - mickey007 - 博客园
        一般情况下docker启动时进行配置,只要把配置文件的目录挂载出来就可以,但是nginx却是先加载一个主配置文件nginx.conf,在nginx.conf里再加载conf.d目录下的子配置文件(一般最少一个default.conf文件)。
        所以实际使用中,个人觉得至少有三个匹配规则定义`

        nginx的其他配置信息介绍

        下面是可以用作判断的全局变量

        例:http://localhost:88/test1/test2/test.php

        解释$host:localhost$server_port:88$request_uri:http://localhost:88/test1/test2/test.php$document_uri:/test1/test2/test.php$document_root:D:\nginx/html$request_filename:D:\nginx/html/test1/test2/test.php

        Redirect语法

        解释server {    listen 80;    server_name start.igrow.cn;    index index.html index.php;    root html;    if ($http_host !~ "^star\.igrow\.cn$" {        rewrite ^(.*) http://star.igrow.cn$1 redirect;    }}

        防盗链

        解释location ~* \.(gif|jpg|swf)$ {    valid_referers none blocked start.igrow.cn sta.igrow.cn;    if ($invalid_referer) {        rewrite ^/ http://$host/logo.png;    }}

        根据文件类型设置过期时间

        解释location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {    if (-f $request_filename) {        expires 1h;        break;    }}

        禁止访问某个目录

        解释location ~* \.(txt|doc)${root /data/www/wwwroot/linuxtone/test;deny all;}

        附:一些可用的全局变量

        解释$args$content_length$content_type$document_root$document_uri$host$http_user_agent$http_cookie$limit_rate$request_body_file$request_method$remote_addr$remote_port$remote_user$request_filename$request_uri$query

        如何检查docker挂载信息是否正确

        启动成功后我们再通过命令来看下docker启动情况和挂载情况

        docker ps

        这里可以看到8089端口已经映射成功了,继续执行命令查看挂载情况

        docker nginx | grep Mounts -A 60

        上传 Web 文件到挂载目录中

        将你的 Web 项目文件上传到 ~/nginx_web这个目录中,例如可以使用 scp命令从其他机器上传文件,或者直接在宿主机上将文件复制到该目录.

        我使用allure,生成测试用例报告在 挂载目录中

        allure generate ./allure-results  -o--clean/Users/zhaohailin/nginx_web

        这是我生成的报告,能看到目录下的index文件

        重启 Nginx 容器

        重启 Nginx 容器,使配置文件的更改生效:

        dockerrestart nginx

        访问网页测试

        通过浏览器访问 http://<宿主机IP>http://<server_name>来查看 Web 应用是否正常运行。Nginx和Apache的部署与配置,可以按照以下步骤进行:

        学习资料参考

        干货 | Docker 还可以搭建Web服务器nginx ?这么宝藏的吗?

        快速上手!使用Docker和Nginx部署Web服务的完美指南_docker nginx部署web应用-CSDN博客

        Docker 安装 Nginx | 菜鸟教程

        mac环境下使用docker安装nginx - mickey007 - 博客园 【配置文件踩坑-解决指南】

        一、

      • 由于这些配置文件已经存在于宿主机上,你可以使用任何文本编辑器方便地进行修改,而不需要进入容器内部进行编辑。

        四、规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。容器、其中 PWD/html代表宿主机的目录,后面的目录/usr/share/nginx/html代表容器内的目录。

      • 日志查看:可以使用docker logs my-nginxdocker logs my-apache命令查看容器的日志输出,帮助调试问题。-p选项允许你创建不存在的父目录,以便创建目标目录。其中 {PWD}/html代表宿主机的目录,后面的目录/usr/share/nginx/html代表容器内的目录。配置与优化
        • 域名配置
        • 证书配置
      • 五、

        例子,有如下匹配规则:
        location = / {
        #规则A
        }
        location = /login {
        #规则B
        }
        location ^~ /static/ {
        #规则C
        }
        location ~ .(gif|jpg|png|js|css)$ {
        #规则D
        }
        location ~* .png$ {
        #规则E
        }
        location !~ .xhtml$ {
        #规则F
        }
        location !~* .xhtml$ {
        #规则G
        }
        location / {
        #规则H
        }
        那么产生的效果如下:
        访问根目录/, 比如http://localhost/ 将匹配规则A
        访问 http://localhost/login 将匹配规则B,http://localhost/register 则匹配规则H
        访问 http://localhost/static/a.html 将匹配规则C
        访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用, 而 http://localhost/static/c.png 则优先匹配到 规则C
        访问 http://localhost/a.PNG 则匹配规则E, 而不会匹配规则D,因为规则E不区分大小写。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。
        访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。

        docker拉取下来的nginx配置文件路径

        日志文件位置:/var/log/nginx配置文件位置: /etc/nginx资源存放的位置: /usr/share/nginx/html

        对应已经到主机挂载的目录

        -v${PWD}/nginx_logs:/var/log/nginx-v${PWD}/nginx_conf/nginx:/etc/nginx-v${PWD}/nginx_web:/usr/share/nginx/html 
        方法一:只修改主配置文件nginx.conf

        方法二:进入挂载的配置文件夹 ~/nginx_conf/conf.d下,修改 <font style="color:#DF2A3F;">default.conf</font>文件

        方法三:新建一个以 .conf为后缀的配置文件(例如 my-web-app.conf).

        到挂载的配置文件夹/nginx_conf/conf.d下,修改default.conf,或者新建conf文件,在这个目录下,conf后缀的文件都会被读取为配置文件(因为/nginx_conf/nginx.conf中配置了include)

        server{#监听的端口号listen 80;#要监听的服务器地址,域名也可行,根据实际情况修改server_name 154.111.111.111;client_max_body_size 20m;access_log /var/log/nginx/host.access.log main;#开启gzip功能(这段可选,如果web界面资源有压缩格式文件可开启)gzipon;#开启gzip静态压缩功能gzip_static on;#gzip缓存大小gzip_buffers 416k;#gzip http版本gzip_http_version 1.1;#gzip 压缩级别 1-10 rgzip_comp_level 5;#gzip 压缩类型gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;#配置禁用gzip条件,支持正则。
    Docker命令
    • 使用**** **docker system df**
      • 这个命令会显示Docker对象的空间使用情况,包括镜像、- 下载并打开Docker Desktop安装包,按照提示完成安装。

      域名配置

      证书配置

      五、此处表示ie6及以下不启用gzip(因为ie低版本不支持gzip_disable "MSIE [1-6]\.";#前端,根据实际情况修改location / {# 项目地址,这里指的是nginx容器的地址root /usr/share/nginx/html;try_files $uri$uri/ /index.html?s=$uri&$args;# 默认访问的资源index index.html index.htm index.php;}# 错误网页配置error_page 500502503504/50x.html;location =/50x.html {root /usr/share/nginx/html;}}

(附加)nginx location配置详细说明

语法规则: location [=||*|^~] /uri/ { … }

● = 开头表示精确匹配
● ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。镜像文件存储在这个虚拟机的文件系统中,通常位于以下路径:

  • /Users/<your-username>/Library/Containers/com.docker.docker/Data/vms/0/docker.qcow2:这是Docker虚拟机的磁盘文件,镜像数据存储在这个虚拟磁盘中.

比如我的地址:

/Users/zhaohailin/Library/Containers/com.docker.docker/Data/vms/0/data

监控Docker存储路径的使用情况可以通过多种方法和工具来实现。你可以根据自己的需求修改这些配置文件,例如调整监听端口、- 运行`docker run hello-world`命令以确保Docker可以正常工作。

  • 方便自定义配置
    • 复制出的初始配置文件可以作为自定义配置的基础。
      macOS

      在macOS上,Docker实际上是运行在一个虚拟机中的。注意事项

  • 座右铭:悲观者正确,乐观者前行
    一位尝试使用 ai+费曼学习法 努力进步的测试新人,路上永远都在hello world!

    在Mac本机上实践Docker、设置服务器名称、
    访问 http://localhost/a.xhtml 不会匹配规则F和规则G,http://localhost/a.XHTML不会匹配规则G,因为不区分大小写。这样,宿主机的 /root/nginx_conf目录就包含了完整的 Nginx 配置文件。配置 SSL 证书等。

  • du -sh /path/to/docker/*:查看Docker存储路径下各个子目录的大小。使用Nginx部署Web应用

    Docker 安装 Nginx | 菜鸟教程

    拉取 Nginx 镜像

    直接拉取官方的 Nginx 镜像,获取最新版本:【官网公共库】

    dockerpull nginx

    创建挂载目录

    在宿主机上创建用于挂载的目录,分别用于存放 Nginx 日志文件、这些默认配置文件位于容器的 /etc/nginx目录中。以下是这个步骤的详细解释和原因:

    为什么需要复制初始配置文件?

    1. 避免配置文件丢失
      • 当你首次启动一个 Nginx 容器时,容器内部会包含一套默认的 Nginx 配置文件。
      • 性能优化:参考之前的Nginx性能优化建议,对Nginx进行配置优化。

        验证安装:

        - 打开终端,运行`docker --version`命令检查Docker版本。