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.www58058.com/78258