linux怎么查看本机内存大小
573
2022-08-22
运行在docker里的nginx添加虚拟目录并设置默认页面
其实是很简单的设置,但由于不懂docker,走了许多弯路。
一、虚拟目录设置规则无效
我想将一些静态资源部署到测试服务器上,方便开发和演示。测试服务器是阿里云虚拟机,linux,上面装有有一个nginx,可以完成这个小凯丝。结果自认为对nginx已经有了一定了解,这种简单任务手到擒来,不料搞到鸡毛鸭血。配置好虚拟目录的映射后,系统死活不认,无法访问,自动跳到登录页面。摘录配置如下:
server { listen 80; server_name 192.168.0.248; location / { root /home/admin_ui/dist; index /mscodereact/index.html; try_files $uri $uri/ /mscodereact/index.html; } location /favicon.ico { root /home/admin_ui/dist; try_files $uri/ /mscodereact/favicon.ico; } #这就是我想添加的虚拟目录 #请注意其路径与 “/”指向的路径并不相同 location /javapubzy/ { index index.html; alias /home/beian/javapubzy/; try_files $uri $uri/ /javapubzy/index.html; }}
在网上查找来,查找去,访问这个{ root /home/admin_ui/dist; index /mscodereact/index.html; try_files $uri $uri/ /mscodereact/index.html; }
其中,try_files $uri $uri/ /mscodereact/index.html;,意思是,系统先看有没有$uri这个文件,没有则看有没有$uri这个文件夹(即$uri/,后面的斜杠代表文件夹)。如果没有,则跳到/mscodereact/index.html,这是一个应用的首页,需要登录。
二、规则无效的原因是路径无法访问
/”指向的路径并不相同 location /javapubzy/ { index index.html; alias /home/beian/javapubzy/; try_files $uri $uri/ /javapubzy/index.html; }
经过反复测试,发现将文件夹移到根目录"/"所在的位置,即可正常访问,放到别的地方就不行。想起之前同事的提示,醒悟过来。我猜测,这个nginx是装在docker里的,安装的时候,只映射了一个特定的文件夹,只有将内容放在其中,才有可能识别。
改为
location /javapubzy/ { index index.html; alias /home/admin_ui/dist/javapubzy/; try_files $uri $uri/ /javapubzy/index.html;}
其实这一步纯属多余。将文件夹javapubzy放置到指定的根目录后,无须做任何设置,即可访问。即使设置了,也不生效。如:
location /j/ { index index.html; alias /home/admin_ui/dist/javapubzy/; try_files $uri $uri/ /j/index.html;}
在这里,想用j来代替javapubzy,反而无法访问,纯属画蛇添足。
由于我目前在docker里如何安装nginx并不了解,所以无法扯更多,可参考如下文章:docker中nginx的默认路径位置和映射目录启动
三、虚拟目录设置规则解释
/ { root /home/admin_ui/dist; index /mscodereact/index.html; try_files $uri $uri/ /mscodereact/index.html; } location /favicon.ico { root /home/admin_ui/dist; try_files $uri/ /mscodereact/favicon.ico; } location /javapubzy/ { index index.html; alias /home/admin_ui/dist/javapubzy/; try_files $uri $uri/ /javapubzy/index.html; }
这3个规则放在一起,结合起来看利于比较。可以发现映射路径有 root 和 alias 两种方式。
1、root与alias的区别 1)root指向虚拟目录所在的父文件夹,而alias直接指向虚拟目录所在文件夹
2)同一个虚拟路径,如果既设置了root方式,又设置了alias方式,则以alias方式为准
2、默认页面
index index.html;
不要用下面这个,这个是列出目录下的文件,不安全。
autoindex on;
3、try_files
try_files $uri $uri/ /javapubzy/index.html;
系统先看有没有$uri这个文件,没有则看有没有$uri这个文件夹(即$uri/,后面的斜杠代表文件夹)。如果没有,则跳到/javapubzy/index.html。
四、其他一些干扰问题
1、nginx里面,http和https是分开设置的。因此映射虚拟目录的话,要分别设置
2、设置完nginx后,利用浏览器测试结果,最好清一下浏览器缓存,否则很可能看不到效果,导致以为设置无效,让人迷惑
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~