最近幾年建站面板里寶塔面板屬于頂尖了,可以一鍵配置很多中間件,其中就包括nginx。
這次我們就嘗試用寶塔安裝nginx來(lái)做個(gè)簡(jiǎn)單的負(fù)載均衡。
1.準(zhǔn)備
兩臺(tái)以上服務(wù)器,我這里準(zhǔn)備了四臺(tái)
寶塔面板安裝nginx1.16
2.Nginx負(fù)載均衡的集中方式介紹
2.1 輪詢
輪詢方式是Nginx負(fù)載默認(rèn)的方式,顧名思義,所有請(qǐng)求都按照時(shí)間順序分配到不同的服務(wù)上,如果服務(wù)Down掉,可以自動(dòng)剔除,如下配置后輪訓(xùn)10001服務(wù)和10002服務(wù)。
upstream lunxun {
server 10.10.0.3;
server 10.10.0.4;
server 10.10.0.5;
}
2.2 權(quán)重
指定每個(gè)服務(wù)的權(quán)重比例,weight和訪問(wèn)比率成正比,通常用于后端服務(wù)機(jī)器性能不統(tǒng)一,將性能好的分配權(quán)重高來(lái)發(fā)揮服務(wù)器最大性能,如下配置后10002服務(wù)的訪問(wèn)比率會(huì)是10001服務(wù)的二倍。
upstream quanzhong {
server 10.10.0.3 weight=1;
server 10.10.0.4 weight=2;
server 10.10.0.5 weight=3;
}
2.3 iphash
每個(gè)請(qǐng)求都根據(jù)訪問(wèn)ip的hash結(jié)果分配,經(jīng)過(guò)這樣的處理,每個(gè)訪客固定訪問(wèn)一個(gè)后端服務(wù),如下配置(ip_hash可以和weight配合使用)。
upstream iphash {
ip_hash;
server 10.10.0.3 weight=1;
server 10.10.0.4 weight=2;
server 10.10.0.5 weight=3;
}
2.4 最少連接
將請(qǐng)求分配到連接數(shù)最少的服務(wù)上。
upstream least_conn {
least_conn;
server 10.10.0.3 weight=1;
server 10.10.0.4 weight=2;
server 10.10.0.5 weight=3;
}
2.5 fair
按后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。
upstream fair {
server 10.10.0.3 weight=1;
server 10.10.0.4 weight=2;
server 10.10.0.5 weight=3;
fair;
}
3.Nginx配置
3.1 nginx配置文件修改
以輪訓(xùn)為例,如下是nginx.conf完整代碼。
把upstream寫在http節(jié)點(diǎn)下
user www www;
worker_processes auto;
error_log /www/wwwlogs/nginx_error.log crit;
pid /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
multi_accept on;
}
http
{
upstream lunxun {
server 10.10.0.3;
server 10.10.0.4;
server 10.10.0.5;
}
upstream quanzhong {
server 10.10.0.3 weight=1;
server 10.10.0.4 weight=2;
server 10.10.0.5 weight=3;
}
upstream iphash {
ip_hash;
server 10.10.0.3 weight=1;
server 10.10.0.4 weight=2;
server 10.10.0.5 weight=3;
}
upstream least_conn {
least_conn;
server 10.10.0.3 weight=1;
server 10.10.0.4 weight=2;
server 10.10.0.5 weight=3;
}
#fair需要ngnix安裝upstr_fair
# upstream fair {
# server 10.10.0.3 weight=1;
# server 10.10.0.4 weight=2;
# server 10.10.0.5 weight=3;
# fair;
# }
include mime.types;
#include luawaf.conf;
include proxy.conf;
default_type application/octet-stream;
server_names_hash_bucket_size 512;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
server_tokens off;
access_log off;
server
{
listen 888;
server_name phpmyadmin;
index index.html index.htm index.php;
root /www/server/phpmyadmin;
#error_page 404 /404.html;
include enable-php.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /\.
{
deny all;
}
access_log /www/wwwlogs/access.log;
}
include /www/server/panel/vhost/nginx/*.conf;
}
3.2 站點(diǎn)配置文件修改
在serveri節(jié)點(diǎn)下location的proxy_pass修改為http://www.tjdsmy.cn_name ,如下
location / {
proxy_pass http://www.tjdsmy.cn;
proxy_redirect default;
}
4.測(cè)試
重啟nginx,第一次訪問(wèn)http://www.tjdsmy.cn如圖所示
這里我設(shè)置的是節(jié)點(diǎn)5權(quán)重較高,所以多次出現(xiàn)節(jié)點(diǎn)5的頁(yè)面

再次訪問(wèn)如圖所示

多次訪問(wèn)如圖所示

如果要修改負(fù)載均衡算法修改站點(diǎn)配置文件中對(duì)應(yīng)upstream模塊即可。