小言_互联网的博客

nginx实现反向代理和负载均衡

381人阅读  评论(0)

1. upstream +proxy_pass 模块实现反向代理

http {
    include       mime.types;
    default_type  application/octet-stream;
        upstream westos {
                server 172.25.254.2:80;

}
server {
        listen 80;
        server_name www.westos.org;
        location / {
                proxy_pass http://westos;
}

}
[root@server1 sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server1 sbin]# ./nginx -s reload
[root@server1 sbin]# 

可以做一下链接,方便用命令

[root@server1 sbin]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@server1 sbin]#

2. 打开后端服务器

[root@server2 ~]# 
[root@server2 ~]# cd /var/www/html/
[root@server2 html]# vim index.html
[root@server2 html]# systemctl start httpd
[root@server2 html]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2020-02-25 18:12:51 CST; 6s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 11735 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/httpd.service

测试:
做好解析

[root@foundation8 kiosk]# vim /etc/hosts
[root@foundation8 kiosk]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.1   www.westos.org  westos.org  bbs.westos.org 

[root@foundation8 kiosk]# 
[root@foundation8 kiosk]# curl www.westos.org
i am server2
[root@foundation8 kiosk]# curl www.westos.org
i am server2
[root@foundation8 kiosk]# curl www.westos.org
i am server2
[root@foundation8 kiosk]# 

3. 配置多后端(实现负载均衡)

http {
    include       mime.types;
    default_type  application/octet-stream;
        upstream westos {
                server 172.25.254.2:80;
                server 172.25.254.3:80;
}
[root@server1 sbin]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server1 sbin]# nginx -s reload
[root@server1 sbin]# 
[root@server3 ~]# vim /var/www/html/index.html
[root@server3 ~]# cat /var/www/html/index.html 
i am server3
[root@server3 ~]# systemctl start httpd
[root@server3 ~]# 

测试:

[root@foundation8 kiosk]# curl www.westos.org
i am server2
[root@foundation8 kiosk]# curl www.westos.org
i am server3
[root@foundation8 kiosk]# curl www.westos.org
i am server2
[root@foundation8 kiosk]# curl www.westos.org
i am server3
[root@foundation8 kiosk]# 

对后端服务器有健康检查机制
关闭后端服务器server2

[root@server2 html]# systemctl stop httpd
[root@server2 html]# 

重新测试

[root@foundation8 kiosk]# curl www.westos.org
i am server3
[root@foundation8 kiosk]# curl www.westos.org
i am server3
[root@foundation8 kiosk]# curl www.westos.org
i am server3
[root@foundation8 kiosk]# curl www.westos.org
i am server3
[root@foundation8 kiosk]# 

4.同一个ip的请求调向固定的后端服务器

http {
    include       mime.types;
    default_type  application/octet-stream;
        upstream westos {
                ip_hash;
                server 172.25.254.2:80;
                server 172.25.254.3:80;
}

测试:

[root@foundation8 kiosk]# curl www.westos.org
i am server2
[root@foundation8 kiosk]# curl www.westos.org
i am server2
[root@foundation8 kiosk]# curl www.westos.org
i am server2
[root@foundation8 kiosk]# curl www.westos.org
i am server2
[root@foundation8 kiosk]# curl www.westos.org
i am server2
[root@foundation8 kiosk]# 

可见,将真机172.25.254.8的访问请求固定到了server2这个后端服务器上。

5. nginx本机作为后端的backup

http {
    include       mime.types;
    default_type  application/octet-stream;
        upstream westos {
                server 172.25.254.2:80;
                server 127.0.0.1:80 backup;
}
[root@server1 sbin]# cd ../conf/
[root@server1 conf]# vim nginx.conf
[root@server1 conf]# vim ../html/index.html 
[root@server1 conf]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server1 conf]# nginx -s reload
[root@server1 conf]# cat ../html/index.html 
i am server2_backup
[root@server1 conf]# 

测试:
当后端服务器server2 正常工作时

当server2出现故障的时候,nginx作为后端服务的backup顶替其工作

[root@foundation8 kiosk]# curl www.westos.org
i am server2_backup
[root@foundation8 kiosk]# curl www.westos.org
i am server2_backup
[root@foundation8 kiosk]# curl www.westos.org
i am server2_backup
[root@foundation8 kiosk]# 


转载:https://blog.csdn.net/yrx420909/article/details/104502227
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场