12-反向代理
快速扩展一台web服务器
快速扩展一台WEB服务器
WEB01 Nginx+PHP
WEB02 Nginx+PHP
WEB02配置:
准备一台WEB02服务器
1.创建虚拟用户www
2.安装nginx
3.安装PHP
4.同步Nginx配置文件
5.同步PHP配置文件
6.同步代码文件
1.创建虚拟用户www
[root@web02 ~]# groupadd -g666 www
[root@web02 ~]# useradd -u666 -g666 -M -s /sbin/nologin www
2.安装Nginx
[root@web02 ~]# vim /etc/yum.repos.d/nginx.repo
[root@web02 ~]# cat /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[root@web02 ~]# yum -y install nginx
同步Nginx所有的配置文件:
rsync -avz --delete 172.16.1.7:/etc/nginx/ /etc/nginx/
3.安装PHP
上传PHP压缩文件
解压
[root@web02 ~]# tar xf php71.tar.gz
本地安装:
[root@web02 ~]# yum -y install locaoinstall ./*.rpm
同步PHP配置文件以WEB01为准
[root@web01 ~]# rsync -avz --delete /etc/php-fpm.d/www.conf 10.0.0.8:/etc/php-fpm.d/www.conf
4.同步代码文件
不建议使用rsync代码小文件太多,消耗磁盘io
4.1、通过打包scp方式拷贝到web02
[root@web01 ~]# tar zcvf code.tar.gz /code/
[root@web01 ~]# scp code.tar.gz 10.0.0.8:/root/
4.2、WEB02进行解压到/目录
[root@web01 ~]# tar xf code.tar.gz -C /
[root@web02 ~]# ll /code/
total 8
drwxr-xr-x 8 www www 294 Jun 20 10:55 phpshe
drwxr-xr-x 6 www www 4096 Jun 20 12:04 wordpress
drwxr-xr-x 14 www www 4096 Jun 20 09:47 zh
4.3、启动Nginx和PHP服务
[root@web02 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web02 ~]# systemctl start nginx
[root@web02 ~]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@web02 ~]# systemctl start php-fpm
[root@web02 ~]# systemctl enable php-fpm
4.4、测试浏览器访问WEB02服务器 做HOST解析
10.0.0.8 wordpress.oldboy.com zh.oldboy.com phpshe.oldboy.com
4.5、修改PHPshe的登陆验证码提示错误: 修改session的目录属主属组www
[root@web02 ~]# chown -R www.www /var/lib/php/session/
[root@web02 ~]# ll -d /var/lib/php/session/
drwxrwx--- 2 www www 6 Oct 26 2019 /var/lib/php/session/
注意: 部署WEB服务需要先在一台上进行安装 然后将代码拷贝到另外一台WEB服务器

拆分静态资源到NFS服务器:
怎么知道那个是静态文件目录? 通过网站的图片查找存放静态文件的目录!
打开web浏览器搜索,找到图片右键复制图片地址,然后打开图片,看URL后面的路径。

1.安装NFS服务
[root@nfs ~]# yum -y install nfs-utils
2.配置NFS服务
[root@nfs ~]# vim /etc/exports
[root@nfs ~]# cat /etc/exports
/data/wordpress/ 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
3.根据配置文件创建必要信息
[root@nfs ~]# mkdir -p /data/wordpress
[root@nfs ~]# groupadd -g666 www
[root@nfs ~]# useradd -u666 -g666 -s /sbin/nologin -M www
[root@nfs ~]# chown -R www.www /data/wordpress/
4.启动NFS并检查配置文件
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl enable nfs
[root@nfs ~]# cat /var/lib/nfs/etab
/data/wordpress 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)
5.WEB01挂载
挂载前先将完整的静态文件拷贝到31的/data/wordpress目录
拷贝WEB服务器上最全的一台服务器的静态文件到/data/wordpress
WEB02刚上传的文件 所以拷贝WEB02的
[root@web02 nginx]# rsync -avz /code/wordpress/wp-content/uploads/ 10.0.0.31:/data/wordpress/
只安装不启动:
[root@web01 ~]# yum -y install nfs-utils
挂载
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/wordpress /code/wordpress/wp-content/uploads/
查看:
[root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 20G 2.3G 18G 12% /
devtmpfs 514M 0 514M 0% /dev
tmpfs 525M 0 525M 0% /dev/shm
tmpfs 525M 15M 510M 3% /run
tmpfs 525M 0 525M 0% /sys/fs/cgroup
/dev/sda1 197M 102M 95M 52% /boot
tmpfs 105M 0 105M 0% /run/user/0
172.16.1.31:/data/wordpress 20G 1.7G 19G 9% /code/wordpress/wp-content/uploads
6.WEB02挂载
只安装不启动
[root@web02 ~]# yum -y install nfs-utils
[root@web02 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data/wordpress 172.16.1.0/24
[root@web02 ~]#
[root@web02 ~]# mount -t nfs 172.16.1.31:/data/wordpress /code/wordpress/wp-content/uploads/
[root@web02 ~]#
[root@web02 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 20G 2.1G 18G 11% /
devtmpfs 514M 0 514M 0% /dev
tmpfs 525M 0 525M 0% /dev/shm
tmpfs 525M 8.2M 517M 2% /run
tmpfs 525M 0 525M 0% /sys/fs/cgroup
/dev/sda1 197M 102M 95M 52% /boot
tmpfs 105M 0 105M 0% /run/user/0
172.16.1.31:/data/wordpress 20G 1.7G 19G 9% /code/wordpress/wp-content/uploads
7、Nginx上传限制大小: vim /etc/nginx/nginx.conf
Nginx上传限制大小: vim /etc/nginx/nginx.conf
client_max_body_size 20M;
PHP限制上传文件大小: vim /etc/php.ini
post_max_size = 8M
upload_max_filesize = 2M
配置Nginx代理:
代理分为正向代理和反向代理
浏览器访问外网,就要通过路由器,路由器就是代理我们出去上网的,后来再经过DNS解析到访问谷歌。

反向代理

正向代理,pc通过路由器获取公网ip地址访问外网
反向代理,外网通过路由器ip映射访问我们的内网服务器
家用路由器使用的就是DMZ映射
NAT转换分为两种
SNAT 原地址转化
DNAT 目标地址转化

正向代理与反向代理的区别
1、区别在于形式上服务的“对象”不一样
2、正向代理代理的对象是客户端,为客户端服务
3、反向代理代理的对象是服务端,为服务端服务

如果是nginx作为反向代理常用的代理协议


模块总结

nginx反向代理配置语法
代理配置语法








1.准备10.0.0.5服务器 主机名称LB01
2.安装Nginx服务
[root@lb01 ~]# scp 10.0.0.7:/etc/yum.repos.d/nginx.repo /etc/yum.repos.d/
[root@lb01 ~]# yum -y install nginx
3.配置代理
[root@lb01 conf.d]# cat proxy.conf
server {
listen 80;
server_name www.oldboy.com; #访问这个网站
location / { #匹配的这个location
proxy_pass http://172.16.1.7:8080; # proxy_pass直接转发,代理到这个网址
}
}
4.WEB01配置8080端口
[root@web01 conf.d]# cat 80.conf
server {
listen 8080;
server_name www.oldboy.com;
location / {
root /code/www_80;
index index.html;
deny 10.0.0.0/24;
allow all;
}
}
[root@web01 conf.d]# mkdir /code/www_80
[root@web01 conf.d]# echo web01......... > /code/www_80/index.html
[root@web01 conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 conf.d]# systemctl restart nginx
5.hosts解析
10.0.0.5 www.oldboy.com
6.代理后端的业务:
6.1、代理的参数:
proxy_set_header Host $http_host; # 携带头部信息
proxy_http_version 1.1; # 代理和服务器使用1.1版本连接
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #设置代理向服务器请求携带真实客户端IP地址
为了易读: 写到文件中
[root@lb01 conf.d]# cat ../proxy_params
proxy_set_header Host $http_host;
proxy_http_version 1.1;
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;
7、在server调用
[root@lb01 conf.d]# cat proxy.conf
server {
listen 80;
server_name wordpress.oldboy.com;
location / {
proxy_pass http://10.0.0.7:80;
include proxy_params;
}
}
小结:
作业: 直接安装在3台服务器 扩展WEB服务 WEB01 WEB02 MySQL
挂载NFS服务器 静态数据共享
反向代理测试(预习负载均衡)
问题案例:
1、nginx图片上传失败
排查思路:
1.查看/vat/log/nginx/error.log,我们设置的nginx错误日志,发现是图片太大了
修改nginx配置文件
vim /etc/nginx/nginx.conf
在http区块添加一个
client_max_body_size 20M
2、nfs挂载失败
排查思路:
1.查看/proc/mount
发现这个目录已经被挂载过一次了还没卸载呢

浙公网安备 33010602011771号