標籤:nginx反向 Proxy 負載平衡 頁面緩衝 讀寫分離
安裝Nginx的依賴:
yum -y install pcre-devel zlib-devel openssl-devel
安裝源碼包Nginx的關聯:
要先建立管理Nginx的系統使用者
useradd -M -s /sbin/nologin nginx
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
*************************************************************************************************
一、Nginx反向 Proxy
1.配置環境一台Nginx,一台測試伺服器,web1
[[email protected] ~]# yum install -y httpd
2.啟動httpd
[[email protected] ~]# service httpd start 正在啟動 httpd: [確定]
3.在httpd頁面寫好頁面
[[email protected] ~]# vim /var/www/html/index.html iiiiiiiiiiiiiiiiiiiiii
4.配置Nginx反向 Proxy
vim /usr/local/nginx/conf/nginx.conflocation / { proxy_pass http://192.168.18.201; }
5.頁面訪問Nginx的IP,會顯示httpd配置的頁面
二、Nginx負載平衡
一台Nginx,兩台web伺服器
1.配置nginx負載平衡
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.confupstream webservers { server 192.168.18.201 weight=1; #實驗環境用權重 server 192.168.18.202 weight=1; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://webservers; proxy_set_header X-Real-IP $remote_addr; }}
注,upstream是定義在server{ }之外的,不能定義在server{ }內部。定義好upstream之後,用proxy_pass引用一下即可。
2.重新載入一下設定檔
[[email protected] ~]# pkill ngixn[[email protected] ~]# /usr/local/nginx/sbin/nginx
3.頁面測試
650) this.width=650;" title="t7" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;border-left:0px;padding-top:0px;padding-left:0px;padding-right:0px;" alt="t7" src="http://img1.51cto.com/attachment/201309/4/2033581_13782771331DV5.png" width="650" border="0" height="243" />
650) this.width=650;" title="t8" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;border-left:0px;padding-top:0px;padding-left:0px;padding-right:0px;" alt="t8" src="http://img1.51cto.com/attachment/201309/4/2033581_1378277133iCzt.png" width="650" border="0" height="249" />
註:不斷重新整理就會發現web1與web2是交替出現的,達到了負載平衡的效果。
三、Nginx頁面緩衝
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m inactive=1m max_size=30g;
inactive=1m 如果緩衝1分鐘沒人訪問,nginx 會刪除掉這些緩衝 硬碟中的最大空間為 30G;
1.配置一個簡單的Nginx快取服務器
[[email protected] ~]# vim /etc/nginx/nginx.confproxy_cache_path /data/nginx/cache/webserver levels=1:2 keys_zone=webserver:20m max_size=1g; upstream webservers { server 192.168.115.87:8080 weight=1 max_fails=2 fail_timeout=2; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://webservers; proxy_set_header X-Real-IP $remote_addr; proxy_cache webserver; proxy_cache_valid 200 10m; }}
2.建立緩衝目錄
[[email protected] ~]# mkdir -pv /data/nginx/cache/webserver
註:建立的目錄要與設定檔裡寫的路徑一樣
3.重啟Nginx
[[email protected] ~]# pkill ngixn[[email protected] ~]# /usr/local/nginx/sbin/nginx
4.頁面重新整理,然後停掉httpd伺服器在重新整理會發現頁面還會存在,然後去web伺服器上查看快取檔案
[[email protected] 63]# pwd/data/nginx/cache/webserver/f/63[[email protected] 63]# ls681ad4c77694b65d61c9985553a2763f #快取檔案
四、Nginx讀寫分離
1修改設定檔
[[email protected] nginx]# vim /usr/local/nginx/conf/nginx.confserver { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://192.168.18.202; if ($request_method = "PUT"){ proxy_pass http://192.168.18.201; } }}
2.重啟Nginx
[[email protected] ~]# pkill ngixn[[email protected] ~]# /usr/local/nginx/sbin/nginx
3.配置httpd的WebDAV功能
650) this.width=650;" title="t17" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;border-left:0px;padding-top:0px;padding-left:0px;padding-right:0px;" alt="t17" src="http://img1.51cto.com/attachment/201309/4/2033581_1378277143SBSg.png" border="0" height="80" />
注,在<Directory "/var/www/html">下啟用就行。
4.重新啟動一下httpd
[[email protected] ~]# service httpd restart停止 httpd: [確定]正在啟動 httpd: [確定]
5.測試一下
[[email protected] ~]# curl http://192.168.18.201<h1>web1.test.com</h1>[[email protected] ~]# curl http://192.168.18.202<h1>web2.test.com</h1>
注,web1與web2訪問都沒問題。
[[email protected] ~]# curl -T /etc/issue http://192.168.18.202<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>405 Method Not Allowed</title></head><body><h1>Method Not Allowed</h1>The requested method PUT is not allowed for the URL /issue.<hr><address>Apache/2.2.15 (CentOS) Server at 192.168.18.202 Port 80</address></body></html>
注,我們上傳檔案到,web2上時,因為web2隻人讀功能,所以沒有開戶WebDAV功能,所以顯示是405 Method Not Allowed。
[[email protected] ~]# setfacl -m u:apache:rwx /var/www/html/
下面我們再來測試一下
[[email protected] ~]# curl -T /etc/issue http://192.168.18.201<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>201 Created</title></head><body><h1>Created</h1>Resource /issue has been created.<hr /><address>Apache/2.2.15 (CentOS) Server at 192.168.18.201 Port 80</address></body></html>
注,大家可以看到我們成功的上傳了檔案,說明nginx讀寫分離功能配置完成。最後,我們來查看一下上傳的檔案。
[[email protected] ~]# cd /var/www/html/[[email protected] html]# ll總用量 12drwxr-xr-x 2 root root 4096 9月 4 13:16 forum-rw-r--r-- 1 root root 23 9月 3 23:37 index.html-rw-r--r-- 1 apache apache 47 9月 4 14:06 issue
以上就是Nginx的方向代理、負載平衡、頁面緩衝、讀寫分離。希望大家有所收穫。
本文出自 “喂,你好” 部落格,請務必保留此出處http://weinihao.blog.51cto.com/12763361/1937192
Nginx 反向 Proxy、負載平衡、頁面緩衝、URL重寫及讀寫分離詳解