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-nginx
或docker 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
目录中。以下是这个步骤的详细解释和原因:
为什么需要复制初始配置文件?
- 避免配置文件丢失:
- 当你首次启动一个 Nginx 容器时,容器内部会包含一套默认的 Nginx 配置文件。
- 性能优化:参考之前的Nginx性能优化建议,对Nginx进行配置优化。
验证安装:
- 打开终端,运行`docker --version`命令检查Docker版本。
nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。如果遇到问题,可以查看 Nginx 容器的日志来排查错误:dockerlogs nginx
通过以上步骤,你就可以使用 Docker 和 Nginx 成功部署 Web 应用了.如果在保持容器启动,就可以在测试工作中,把测试报告给开发大哥看了。8081)在本地没有被其他应用占用。
如果你直接将一个空的宿主机目录挂载到容器的 /etc/nginx
目录,那么容器内部的默认配置文件会被覆盖(即同步为空目录),导致 Nginx 无法正常启动,因为 Nginx 需要有效的配置文件来运行。
删除容器并重新启动:
dockerrm-fnginx
删除之前创建的容器,因为它的任务已经完成(即复制配置文件)。注意事项
- 端口冲突:确保选择的端口(如8080、

重新启动容器并挂载目录:
这一步重新创建并启动容器,同时将宿主机的配置文件目录 ~/nginx_conf/nginx
挂载到容器的 /etc/nginx
目录。
- 通过先启动容器并复制出这些默认配置文件,你可以确保宿主机的挂载目录中包含了完整的 Nginx 配置文件,从而避免了配置文件丢失的问题。- 在菜单栏上,点击Docker图标并选择"Preferences"来配置Docker设置(如需要)。
- -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。这样,目录将被创建在你的用户目录下。由于宿主机目录中已经包含了完整的配置文件,Nginx 可以正常读取这些配置文件并启动。
通过这种方式,你可以确保 Nginx 容器在启动时能够使用正确的配置文件,同时方便地进行自定义配置的修改和管理.
dockerrun -itd--namenginx -p8081:80 -v${PWD}/nginx_web:/usr/share/nginx/html -v${PWD}/nginx_conf/nginx:/etc/nginx -v${PWD}/nginx_logs:/var/log/nginx nginx

注意检查 -v
参数中挂载目录的路径是否有误.
- <font style="color:rgb(51, 51, 51);">参数说明:</font>
- –name my-nginx:容器名称。然后我们在访问宿主机的IP和端口查看一下状态。
nginx_logs
和 nginx_web
目录。它们中间用分号隔开。安装Docker - 下载Docker Desktop:
- 启动Docker:
- 验证安装:
- macOS
- 命令行工具
- Docker命令
- 二、
启动Docker:
- 打开Docker Desktop应用。其中{PWD}是一个系统变量,代表当前所在的目录。配置文件和 Web 项目文件:mkdir~/nginx_confmkdir~/nginx_logsmkdir~/nginx_web
在 macOS 的命令行中,如果你需要快速创建多层目录结构,可以使用 mkdir
命令结合 -p
选项。如果你只是想在用户目录下创建这些子目录,可以使用相对路径或指定你的用户目录路径。配置与优化
- 配置文件:根据需要编辑本地的Nginx配置文件,然后重新启动相应的容器以应用更改。
du -sh /path/to/docker
:查看Docker存储路径的总大小。它们中间用分号隔开。卷和网络
二、这样可以方便地进行学习和测试,而无需依赖远程服务器或虚拟机。
● ~ 开头表示区分大小写的正则匹配
● ~* 开头表示不区分大小写的正则匹配
● !和!*分别为区分大小写不匹配及不区分大小写不匹配 的正则
● / 通用匹配,任何请求都会匹配到。它们中间用分号隔开。
请注意,/root
在 macOS 中是一个特殊目录,通常用于存储系统文件。

为这些目录授权,防止 Nginx 在操作文件夹时权限不足:
chmod777~/nginx_confchmod777~/nginx_logschmod777~/nginx_web

创建容器并挂载目录
找资料学习过程中,不是很理解创建容器并挂载目录,为什么先创建启动容器,复制初始配置文件?
在使用 Docker 部署 Nginx 时,先创建并启动容器以复制初始配置文件的步骤,主要是为了确保宿主机上的配置文件目录能够正确地包含 Nginx 的配置文件。
通过以上步骤,你可以在Mac本机上实践Docker环境下的Nginx部署与配置。
-v ~/nginx/conf:/etc/nginx/conf.d -v ~/nginx/html:/usr/share/nginx/html -v ${PWD}/html:/usr/share/nginx/html: -v参数代表挂载一个目录到容器内,前面的目录P W D / h t m l 代表宿主机的目录,后面的目录 / u s r / s h a r e / n g i n x / h t m l 代表容器内的目录。复制配置文件到宿主机:
dockercpnginx:/etc/nginx ~/nginx_conf
这一步将容器内部的 /etc/nginx
目录复制到宿主机的 /root/nginx_conf
目录中。
具体步骤解释
创建并启动容器:
dockerrun -itd--namenginx -p8081:80 nginx
这一步创建并启动了一个名为 nginx
的容器,使用默认的 Nginx 配置文件运行。