个人笔记nginx:扩展多个web节点和nginx代理(四十二)

一、扩展多个WEB节点

  • 原因:单台web服务器能抗住的访问是有限的,配置多台web服务器能提升更高的访问速度,能够接受到更多的用户请求
  1. 提高冗余

  2. 提高性能
    环境:

     web01			10.0.0.7		172.16.1.7
     web02			10.0.0.8		172.16.1.8
     db01			10.0.0.51		172.16.1.51
    
  • 安装nginx+php环境
web01执行的操作
	[root@web01 ~]# scp /etc/yum.repos.d/nginx.repo [email protected]:/etc/yum.repos.d/nginx.repo
	[root@web01 ~]# scp php.zip [email protected]:~

web02执行的操作:
	[root@web02 ~]# unzip php.zip				#解压web01推送过来的压缩包
	[root@web02 ~]# yum localinstall php/*.rpm		#通过本地方式安装所有的rpm
	[root@web02 ~]# yum install nginx -y

  • 推送web01上的nginx配置、php配置、至web02
	[root@web01 ~]# scp -rp /etc/nginx [email protected]:/etc/
	[root@web01 ~]# scp -rp /etc/php-fpm.d/www.conf  [email protected]:/etc/php-fpm.d/www.conf
	[root@web01 ~]# scp -rp /etc/php.ini  [email protected]:/etc/php.ini
  • 将web01上的代码推送一份至web02
	[root@web01 ~]# scp -rp /code [email protected]:/
  • 启动服务nginx php
	[root@web02 ~]# groupadd -g 666 www
	[root@web02 ~]# useradd -u 666 -g 666 www
	[root@web02 ~]# systemctl restart nginx php-fpm
	[root@web02 ~]# systemctl enable nginx php-fpm
	[root@web02 ~]# chown -R www.www /code/	
引入NFS共享存储,来保证静态资源的一致
  • 安装一台NFS服务器,配置并共享一个目录

	#安装配置
	[root@nfs ~]# yum install nfs-utils -y
	[root@nfs ~]# cat /etc/exports
	/data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

	#初始化环境
	[root@nfs ~]# groupadd -g 666 www
	[root@nfs ~]# useradd -u666 -g666 www
	[root@nfs ~]# rm -rf /data/
	[root@nfs ~]# mkdir /data/blog -p
	[root@nfs ~]# chown -R www.www /data/blog/

	#重启
	[root@nfs ~]# systemctl restart nfs
	[root@nfs ~]# systemctl enable nfs
  • 找到网站静态资源存放的路径,然后进行NFS的共享。
	在所有的web节点执行如下操作:
		[root@web02 ~]# mount -t nfs 172.16.1.31:/data/blog /code/wordpress/wp-content/uploads/
		[root@web01 ~]# mount -t nfs 172.16.1.31:/data/blog /code/wordpress/wp-content/uploads/

二、nginx代理

  • 想要实现负载均衡,必须先去了解 Nginx代理, 然后在学习负载均衡。

正向与反向代理的区别
  区别在于形式上服务的"对象"不一样
  正向代理代理的对象是客户端,为客户端服务 (常用与为客户端提供科学写上网的方式)
  反向代理代理的对象是服务端,为服务端服务 (用用于企业集群架构, 后端有多个web节点组成的集群,然后 接入代理,由代理统一调度)

反向代理模式 Nginx反向代理模块 应用
http、websocket、https ngx_http_proxy_module java \ http \ https \websocket \go
fastcgi ngx_http_fastcgi_module php
uwsgi ngx_http_uwsgi_module python
grpc ngx_http_v2_module go
  • 配置:
    客户端:10.0.0.1
    反向代理: 10.0.0.5 172.16.1.5
    后端节点: 10.0.0.7 172.16.1.7
  • 配置后端的web节点,域名是 web.oldxu.com 端口是8080

[root@web01 ~]# cat /etc/nginx/conf.d/web.xu.com.conf
server {
	listen 8080;
	server_name web.xu.com;
	root /web;

	location / {
		index index.html;
	}
}

[root@web01 ~]# systemctl reload nginx
  • 配置Nginx反向代理,代理后端的web节点
[root@lb01 ~]# gzip /etc/nginx/conf.d/default.conf
[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_web.xu.com.conf
server {
	listen 80;
	server_name web.xu.com;

	location / {
		proxy_pass http://10.0.0.7:8080;
	}
}

[root@lb01 ~]# systemctl start nginx
[root@lb01 ~]# systemctl enable nginx
  • 告诉后端服务器,我要请求你的80端口,同时请求的是哪个域名
  • 用户请求 代理 使用的是 http1.1协议,而代理请求后端服务使用的是 http1.0协议。
  • proxy_http_version 1.1; 配置这条即可实现代理与后端走http1.1长连接协议。
proxy代理服务:
[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_web.xu.com.conf
server {
	listen 80;
	server_name web.xu.com;

	location / {
		proxy_pass http://10.0.0.7:80;
		proxy_set_header Host $http_host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_http_version 1.1;
	}
}

后端web节点:
[root@web01 ~]# cat  /etc/nginx/conf.d/web.xu.com.conf
server {
	listen 80;
	server_name web.xu.com;
	root /web;

	location / {
		index index.html;
	}
}
  • 与Nginx代理相关的参数有哪些?通过 一张图来解释所有的参数。

      proxy_connect_timeout time;	nginx代理与后端服务器连接超时时间(代理连接超时)
      proxy_read_timeout time;	nginx代理等待后端服务器的响应时间
      proxy_send_timeout time;	后端服务器数据回传给nginx代理超时时间
      proxy_buffering on | off;
      proxy_buffer_size size;
      proxy_buffers number size;
    
[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_web.xu.com.conf
server {
	listen 80;
	server_name web.xu.com;

	location / {
		proxy_pass http://172.16.1.7:80;
		proxy_http_version 1.1;

		proxy_set_header Host $http_host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

		proxy_connect_timeout 30;
		proxy_send_timeout 60;
		proxy_read_timeout 60;

		proxy_buffering on;
		proxy_buffer_size 32k;
		proxy_buffers 4 128k;
	}
}
  • 仅能代理一台后端webserver?多台webserver组成的集群怎么办?
    Nginx负载均衡
Nginx代理的 配置文件进行优化:
[root@lb01 ~]# cat /etc/nginx/proxy_params
proxy_http_version 1.1;

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;

proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;

[root@lb01 ~]# cat  /etc/nginx/conf.d/proxy_web.xu.com.conf
server {
	listen 80;
	server_name web.xu.com;

	location / {
		proxy_pass http://172.16.1.7:80;
		include proxy_params;
	}
}

你可能感兴趣的:(个人笔记nginx:扩展多个web节点和nginx代理(四十二))