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

发现这个目录已经被挂载过一次了还没卸载呢

posted @ 2023-03-30 16:13  猛踢瘸子nei条好腿  阅读(64)  评论(0)    收藏  举报