Nginx 反向 Proxy、負載平衡、頁面緩衝、URL重寫及讀寫分離詳解

來源:互聯網
上載者:User

標籤: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重寫及讀寫分離詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.