Home  >  Article  >  Operation and Maintenance  >  How to achieve load balancing in CentOS based on nginx reverse proxy

How to achieve load balancing in CentOS based on nginx reverse proxy

WBOY
WBOYforward
2023-05-18 16:49:061152browse

The advantages of nginx for load balancing:

1. Working above the 7th layer of the network, you can make some offloading strategies for http applications, such as domain names and directory structures. Its regular rules are more powerful and flexible than haproxy, which is one of the main reasons why it is currently widely popular. nginx can be used in far more situations than lvs based on this alone.

2. nginx’s impact on the network The dependence on stability is very small. In theory, the load function can be carried out if pinging is successful. This is also one of its advantages; on the contrary, lvs has a greater dependence on network stability, which I have a deep understanding of

3 , nginx installation and configuration is relatively simple, and it is more convenient to test. It can basically print out errors in the log. It takes a long time to configure and test LVS. LVS relies heavily on the network

4. It can withstand high load pressure and is stable. It can generally support tens of thousands of times if the hardware is not bad. The amount of concurrency and load are relatively smaller than lvs

Notes:

1. Different installation methods have different nginx configuration file locations

2 . If upstream uses the ip_hash method, each request will be allocated according to the hash result of the accessed IP, so that each visitor has a fixed access to a back-end server, which can solve the session problem.

Environment:

System: centos6.6
nginx ip: 192.168.20.103
web1 ip: 192.168.20.193
web2 ip: 192.168.20.194

1. Install nginx

Two methods, I used the first one

The first yum installation requires the installation of a third-party yum source, because nginx is not in the yum source of centos by default, so it is required Update

yum install wget #安装下载工具
wget http://www.atomicorp.com/installers/atomic #下载
sh ./atomic #安装
yum check-update #更新yum源 有的需要更新几次 才有nginx最新版本 否则是老版本nginx
yum remove httpd* php* #删除系统自带的软件包 也可加mysql*前提备份数据库
yum install nginx #安装nginx根据提示输入y进行安装
chkconfig nginx on #设置nginx开机启动
service nginx start #启动nginx 重启 restart

The second type of compilation and installation

wget http://nginx.org/download/nginx-1.7.8.tar.gz
tar -zxvf nginx-1.7.8.tar.gz
cd nginx-1.7.8
./configure
make && make install

2. Modify the configuration file

nginx’s upstream defaults to polling to achieve load balancing , in this method, each request is assigned to different back-end servers one by one in chronological order. If the back-end server goes down, it can be automatically eliminated.

Another way is ip_hash: each request is allocated according to the hash result of the accessed IP, so that each visitor has a fixed access to a back-end server, which can solve the session problem

Modify /etc/ Add nginx/nginx.conf

#负载均衡配置
upstream backend {
#ip_hash;
server 192.168.20.193;
server 192.168.20.194;
}

Modify /etc/nginx/conf.d/default.conf

location / {
#设置主机头和客户端真实地址,以便服务器获取客户端真实ip
    proxy_set_header host $host;
    proxy_set_header x-real-ip $remote_addr;
    proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
    #禁用缓存
    proxy_buffering off;
    #反向代理的地址
    proxy_pass http://backend;
    root  /usr/share/nginx/html;
    index index.html index.htm;
    # example
    #modsecurityenabled on;
    #modsecurityconfig /etc/nginx/modsecurity.conf;
}

3. Test

First The first visit is forwarded to 193, because upstream defaults to polling, and the second visit is forwarded to 194

How to achieve load balancing in CentOS based on nginx reverse proxy

How to achieve load balancing in CentOS based on nginx reverse proxy

The above is the detailed content of How to achieve load balancing in CentOS based on nginx reverse proxy. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete