Nginx搭建反向代理負載均衡和web快取伺服器
網際網路中當web伺服器無法承受大量使用者訪問時,可以採用負載均衡加快取技術來降低單臺伺服器和資料庫的壓力,常用的開源軟體有nginx、varnish、squid等。而相對來說nginx具有輕量級、多核cpu利用、安裝配置簡單等優點,個人更喜歡用nginx。centos環境下的安裝配置。
1、安裝環境
安裝nginx需要的環境,pcre(作用rewrite)、zlib(作用壓縮)、ssl(支援https等),這個可以yum安裝,也可以自己下載原始碼編譯安裝。
yum -y install zlib;
yum -y install pcre pcre-devel;
yum -y install openssl openssl-devel;
- 安裝ngx cache purge快取外掛
下載ngx_cache_purge-2.3版本為例
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
解壓到某個目錄tar zxvf ngx_cache_purge-2.3.tar.gz
- 下載安裝nginx
下載nginx1.13.12版本為例
wget http://nginx.org/download/nginx-1.13.12.tar.gz
tar -zxvf nginx-1.13.12.tar.gz
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --add-module=/步驟二中解壓的路徑/ngx_cache_purge-2.3 --with-http_proxy_module
解釋: --prefix 為安裝路徑,--with-為需要安裝的模組,具體可以執行 ./configure --help 檢視有效模組,--add-module=/步驟二中解壓的路徑/ngx_cache_purge-2.3
make && make install;
4、執行nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
5、配置nginx.conf
vim /usr/local/nginx/conf/nginx.conf
示例:
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
##cache begin##
proxy_buffering on;
proxy_cache_valid any 1m;
proxy_cache_path /var/nginxcache levels=1:2 keys_zone=my-cache:8m max_size=1000m inactive=10m;
proxy_temp_path /var/nginxcache;
proxy_buffer_size 4k;
proxy_buffers 100 8k;
##cache end##
## Apache backend servers ##
upstream backendserver{
server 192.168.0.101:80;
server 192.168.0.102:8080;
}
##nginx local server begin##
listen 80;
server_name myserver;
index index.html index.htm;
root /var/www/html;
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache my-cache;
proxy_cache_valid 200 304 1m;
proxy_cache_valid any 2m ;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
proxy_pass http://backendserver1;
expires 1m;
}
location ~ /purge(/.*)
{
auth_basic "TDT Center CACHE Center";
auth_basic_user_file /tmp/htpasswd;
allow 127.0.0.1;
deny all;
}
##nginx local server end##
}
快取相關配置說明:
proxy_cache my-cache;指定使用哪個共享快取空間,my-cache與proxy_cache_path中name對應。
proxy_cache_key:設定快取使用的key,預設為完整的訪問URL,根據實際情況設定快取key。
proxy_cache_valid 200 304 1m:為不同的響應狀態碼設定快取時間。如果是any為全部。
max_size:指的是快取檔案可以佔用的最大空間。
Inactive:快取時間,優先順序大於proxy_cache_valid,為避免proxy_cache_valid不起作用,應將Inactive設定大於proxy_cache_valid。
expires 1m;用在發給客戶端的響應中,新增"Expires"頭,可重定義後端html的head頭"Expires"。
反向代理負載均衡相關配置說明:
proxy_pass http://backendserver;指定反向代理到後端伺服器。
upstream backendserver{
server 192.168.0.101:80;
server 192.168.0.102:8080;
}
nginx 提供輪詢(round robin)、使用者 IP 雜湊(client IP)和指定權重 3 種方式,預設為輪詢作為負載均衡策略。雜湊方式如下:
upstream backendserver{
ip_hash;
server 192.168.0.101:80;
server 192.168.0.102:8080;
}
權重方式如下:
upstream backendserver{
server 192.168.0.101:80 weight=1;
server 192.168.0.102:8080 weight=9;
}
proxy_set_header Host $host;重新定義或者新增發往後端伺服器的請求頭。
proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;避免後端伺服器head頭設定了no-cache、no-store,造成無法快取。
其他引數設定,諸如快取buffer等可以根據實際情況設定
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
採用nginx架設一臺快取加反向代理到後臺多臺伺服器可以滿足很多情況下的併發訪問壓力問題,特別是web應用中有資料庫訪問的,如果對資料訪問時效性要求不高時,應用快取後對資料庫壓力可以大大降低。
相關文章
- 代理與反向代理、負載均衡和快取負載快取
- Nginx負載均衡反向代理伺服器Nginx負載伺服器
- nginx配置web服務|反向代理|負載均衡NginxWeb負載
- Nginx入門(2)反向代理和負載均衡Nginx負載
- docker下nginx反向代理和負載均衡配置DockerNginx負載
- Nginx伺服器的使用與反向代理負載均衡Nginx伺服器負載
- nginx反向代理和負載均衡策略實戰案例Nginx負載
- 做了反向代理和負載均衡的nginx配置檔案簡單示例(nginx.conf) HTTP負載均衡/TCP負載均衡負載NginxHTTPTCP
- Nginx反向代理負載均衡的容器化部署Nginx負載
- 介紹下Nginx 反向代理與負載均衡Nginx負載
- nginx面試題-nginx負載均衡與正反向代理Nginx面試題負載
- 循序漸進nginx(二):反向代理、負載均衡、快取服務、靜態資源訪問Nginx負載快取
- nginx反向大理和負載均衡以及高可用Nginx負載
- nginx反向代理快取教程。Nginx快取
- nginx反向代理負載均衡帶你突破單臺伺服器的瓶頸Nginx負載伺服器
- centos7下配置nginx反向代理負載均衡叢集CentOSNginx負載
- 秒懂負載均衡與反向代理負載
- 在Linux中,nginx反向代理和負載均衡實現原理是什麼?LinuxNginx負載
- 圖解Nginx,系統架構演變 + Nginx反向代理與負載均衡圖解Nginx架構負載
- 誰說前端不需要懂-Nginx反向代理與負載均衡前端Nginx負載
- Nginx 全模組安裝及匹配方式、反向代理和負載均衡配置Nginx負載
- 在windows環境下 nginx + .net core 3.1 實現反向代理和負載均衡WindowsNginx負載
- Nginx入門到實戰(3)負載均衡和快取服務Nginx負載快取
- 代理和負載均衡概述負載
- 理解 Nginx HTTP 代理, 負載均衡, Buffering, CachingNginxHTTP負載
- Nginx多種負載均衡策略搭建Nginx負載
- nginx負載均衡Nginx負載
- 【Nginx】負載均衡Nginx負載
- NGINX 負載均衡Nginx負載
- nginx反向代理、負載均衡配置與linux環境下的安裝及通過ip和域名訪問nginxNginx負載Linux
- 簡單實踐搭建 nginx 負載均衡Nginx負載
- 怎樣利用快取伺服器來負載均衡VG快取伺服器負載
- 10分鐘學會windows中iis搭建伺服器叢集實現負載均衡和nginx代理轉發Windows伺服器負載Nginx
- Nginx初步(反向代理/Web伺服器/輕量級)NginxWeb伺服器
- Haproxy搭建 Web 群集實現負載均衡Web負載
- Nginx負載均衡模式Nginx負載模式
- 基於 CentOS 7 + Nginx + Tomcat 的負載均衡伺服器的搭建CentOSNginxTomcat負載伺服器
- Nginx 兩臺伺服器配置負載均衡!!!Nginx伺服器負載