昨天试着在 docker 中装了nginx ,照着docker hub 上nginx的教程
写了dockerfile,build 通过,但就是找不到我COPY 进去 的路径。
最后用 docker exec -i -t contailer_name /bin/bash 进入容器中看看 到底 /usr/share/nginx/html 中目录是怎么放的 解决了
今天早上就想 了解下nginx 分发静态文件时的目录到底是怎么弄得,同样··磕磕绊绊的看官方文档,忍着痛苦···
第一个就是介绍 分发静态文件的,说的超级清楚有木有··
匹配时会把 location 后面的URI 加到 root 指令 后面,如果 有多个匹配的,就选最长的,所以·· location / 是最后被匹配的
上手试试?
嗯···在linux 上编辑到底是很麻烦··还是windows 上吧,应该差不多···灾难往往就发生在差不多时。
在 linux 上,路径是 正斜杠 /
在windows 上,路径是反斜杠 \ ,还要加上盘符。
最开始怎么改都没用,就是404 ,nginx -s reload 好多次,后来想着是不是重启下,nginx -s stop 结果竟然关不了··,logs 下的 nginx.pid 都没了··
再资源管理器 里面两个进程··一个master 一个 worker ,怎么搞··
把两个都删了,如果删了worker ,那··master 会重启一个··快到你反应不过来··没办法··多试几次吧
再重启时,就好了。
总结:
1、windows 上运行nginx 分发静态文件,路径必须用反斜杠,而且 location block里 只能用root,不能用alias,
因为 alias 是别名,路径的后面要加 \, 例如 alias C:\11; 访问 localhost/11.jpg,路径会是 C:\1111.jpg,看error.log 就知道了
alias C:\11\; 这样的话··,nginx 语法不通过,所以··只能root
2、 请及时看错误日志
3、还是用linux 比较好,编辑不好用,也可以练练···