目录

1.nginx反向代理

2.nginx负载均衡

3.nginx反向代理及负载均衡实现

nginx反向代理

4台主机都需要的操作:

两台服务器操作:

两台主机服务器进行测试;

nginx负载均衡配置

4.nginx配置其他参数

多虚拟机访问

后端服务器日志中需要记录客户端真实ip

nginx设置不同的url访问不同页面,可以实现动静分离

在代理主机上设置:

在web服务器上:

测试:

5.nginx的upstream其他参数

backup:

down:

1.nginx反向代理

原理:客户端向反向代理服务器发送请求,反向代理服务器将请求发送给相应服务器,然后服务器收到并将响应返回给反向代理服务器,由反向代理服务器将响应返回给客户端。

优点:1.可以有效防止对服务器的恶意攻击。2.减少服务器的压力。3.提高访问速度。

2.nginx负载均衡

负载均衡:防止一台服务器宕机之后,业务出现阻断。

优点:减少服务器压力,解决某时刻高并发。

3.nginx反向代理及负载均衡实现

nginx反向代理

配置准备4台主机,并在5台主机,4台上都安装nginx,另外一台客户端

4台主机都需要的操作:

检查防火墙与selinux1.安装epel扩展源yum install -y epel-release2.安装nginxyum install -y nginx

两台服务器操作:

配置虚拟主机1.vim /etc/nginx/conf.d/vhost.confserver {listen 80;server_name bbs.yunjisuan.com;location / {root /usr/share/nginx/html/bbs;index index.html index.htm;}access_log /usr/share/nginx/html/www/logs/access_www.log main;这两个日志目录需要自己创建}server {listen 80;server_name www.yunjisuan.com;location / {root /usr/share/nginx/html/www;index index.html index.htm;}access_log /usr/share/nginx/html/bbs/logs/access_bbs.log main;}2.配置网页页面mkdir -pv /usr/share/nginx/html/{bbs,www}切到不同目录配置页面即可echo "this is $HOSTNAME bbs" > index.html3.重启nginx服务

两台主机服务器进行测试;

curl -H host:bbs.yunjisuan.com 192.168.27.12curl -H host:bbs.yunjisuan.com 192.168.27.122curl -H host:bbs.yunjisuan.com 192.168.27.123curl -H host:www.yunjisuan.com 192.168.27.123curl -H host:www.yunjisuan.com 192.168.27.122

nginx负载均衡配置

负载均衡需要在两台不是服务器的主机上操作

负载均衡的关键段是upstream(定义转发池)porxy_pass (指定转发)

两台主机:1.编写额外配置文件[root@lb01 ~]# more /etc/nginx/conf.d/vhosts.conf upstream www_server_pools {server 192.168.27.122:80 weight=2;定义转发找这两个服务器server 192.168.27.123:80 weight=1;}server {listen 80;server_name www.yunjisuan.com;location / {proxy_pass http://www_server_pools;当访问网址时,转发到这个转发池}}server {listen 80;server_name bbs.yunjisuan.com;location / {proxy_pass http://www_server_pools;}}2.重新启动3.在客户端配置hosts解析文件vim /etc/hosts代理主机www.yunjisuan.com bbs.yunjisuan.com4.客户端进行测试for ((i=1;i<=10;i++));do curl http://bbs.yunjisuan.com; done

4.nginx配置其他参数

多虚拟机访问

当配置好负载均衡后,访问bbs可能出现的页面还是www,是因为没有找到对应的请求头部信息。

配置:

1.在代理主机上配置[root@lb01 ~]# more /etc/nginx/conf.d/vhosts.conf upstream www_server_pools {server 192.168.27.122:80 weight=2;server 192.168.27.123:80 weight=1;}server {listen 80;server_name www.yunjisuan.com;location / {proxy_pass http://www_server_pools;proxy_set_header Host $host;定义这一行}}server {listen 80;server_name bbs.yunjisuan.com;location / {proxy_pass http://www_server_pools;proxy_set_header Host $host;}}

后端服务器日志中需要记录客户端真实ip

默认不会再服务器中记录客户端真实ip,只会记录代理主机,所以开启相应参数,记录客户端真实ip。

在代理主机进行操作[root@lb01 ~]# more /etc/nginx/conf.d/vhosts.conf upstream www_server_pools {server 192.168.27.122:80 weight=2;server 192.168.27.123:80 weight=1;}server {listen 80;server_name www.yunjisuan.com;location / {proxy_pass http://www_server_pools;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;}}server {listen 80;server_name bbs.yunjisuan.com;location / {proxy_pass http://www_server_pools;proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;}}重启并测试

nginx设置不同的url访问不同页面,可以实现动静分离

在代理主机上设置:

vim /etc/nginx/conf.d/vhosts.confupstream static_pools {定义不同的转发池server 192.168.27.122:80;}upstream active_pools {server 192.168.27.123:80;}server {listen 80;server_name www.yunjisuan.com;location /static/ { proxy_pass http://static_pools;proxy_set_header Host $host;}location /active/ { proxy_pass http://active_pools; proxy_set_header Host $host;}}重启

在web服务器上:

两台服务器都可以操作1.将之前的虚拟主机停到改一下后缀名称2.配置不同页面cd /usr/share/nginx/html/mkdir staticcd static/echo "this is static" > index.htmlcd ..mkdir activeecho "this is active" > index.html重启

测试:

curl http://www.yunjisuan.com/active/curl http://www.yunjisuan.com/static/一定要带最后面的/

5.nginx的upstream其他参数

backup:

当所有服务器宕机之后,会去寻找配置了backup的页面

upstream www_server_pools {server 192.168.27.122:80 weight=2;server 192.168.27.123:80 weight=1;server 192.168.27.120:80 backup;}

down:

配置之后,会将会话保持:

upstream www_server_pools {ip_hash;server 192.168.27.122:80 weight=2;server 192.168.27.123:80 weight=1;}

注意:backup和ip_hash不可以同时使用。