yum install nginx #安装Nginx,安装包在epel源中 systemctl start nginx.service #启动服务 #实验:配置一个虚拟主机 #先给一个网页文件 ~]#mkdir /data/nginx/vhost1 -pv ~]#vim /data/nginx/vhost1/index.html <h1>Nginx Vhost 1</h1> #配虚拟主机 ~]#vim /etc/nginx/conf.d/vhost1.conf server { listen 80; server_name www.ilinux.io; root /data/nginx/vhost1; } #保存退出 ~]#nginx -t #测试语法问题 ~]#nginx -s reload #重载 #浏览器地址栏中输入:www.ilinux.io (须进行域名解析) #显示“Nginx Vhost 1” #成功! #实验:拒绝172.16.251.213主机访问 ~]#vim /etc/nginx/conf.d/vhost1.conf server { listen 80; server_name www.ilinux.io; root /data/nginx/vhost1; location / { deny 172.16.251.213; allow all; } #添加一个location定义 } #保存退出 ~]#nginx -t #测试语法问题 ~]#nginx -s reload #重载 #213主机中: #首先加一个名称解析 ~]#vim /etc/hosts 172.16.251.128 www.ilinux.io ~]#curl http://www.ilinux.io/index.html #显示Forbidden #成功! #实验:只是对/下的某些资源启用访问限制,比如访问一些图片 ~]#vim /etc/nginx/conf.d/vhost1.conf server { listen 80; server_name www.ilinux.io; root /data/nginx/vhost1; location ~*\.(jpg|png)$ { #可以更灵活的使用正则表达式来定义URL deny 172.16.251.213; allow all; } } #保存退出 ~]#nginx -t #测试语法问题 ~]#nginx -s reload #重载 #切换到213主机访问 ~]#curl http://www.ilinux.io/index.html #就不会显示Forbidden,因为访问的不是以jpg或png结尾的文件 #切换到128主机 ~]#cd /data/nginx/vhost1 #复制一些图片到这个目录下 ~]#find /usr/share/ -iname "*.jpg" -exec cp {} ./ \; #用浏览器随便访问一个图片 www.ilinux.io/leaf.jpg #可以看到图片 #切换到213主机访问一样的图片 ~]#curl http://www.ilinux.io/leaf.jpg #显示Forbidden #成功! #实验:验证location的优先级匹配 ~]#vim /etc/nginx/conf.d/vhost1.conf server { listen 80; server_name www.ilinux.io; root /data/nginx/vhost1; location / { allow all; } #在之前的location上面再定义一个允许所有主机访问 location ~*\.(jpg|png)$ { deny 172.16.251.213; allow all; } } #保存退出 ~]#nginx -t #测试语法问题 ~]#nginx -s reload #重载 #再切换到213主机访问 ~]#curl http://www.ilinux.io/leaf.jpg #还是显示Forbidden #location是自上而下匹配,优先级高的匹配 #虽然允许所有访问的location在上面,但下面一个location优先级高,所以还是拒绝 #成功! #实验:验证root的优先级匹配 ~]#vim /etc/nginx/conf.d/vhost1.conf server { listen 80; server_name www.ilinux.io; root /data/nginx/vhost1; location / { root /data/nginx/vhost2; #在location中定义一个root allow all; } location ~*\.(jpg|png)$ { deny 172.16.251.213; allow all; } } #保存退出 ~]#nginx -t #测试语法问题 ~]#nginx -s reload #重载 #128主机中: ~]#mkdir /data/nginx/vhost2 #创建刚刚定义的root目录 ~]#vim /data/nginx/vhost2/index.html #给一个测试页 <h1>Vhost2</h1> #用213主机访问: ~]#curl http://www.ilinux.io/index.html #显示“<h1>Vhost2</h1>” #如果location中定义了root,那server中root就失效,以location中定义的为准 #成功!
用了一些自己的语言来总结,不是很标准,见谅。
原创文章,作者:XIAJIDONG,如若转载,请注明出处:http://www.178linux.com/78258