目录
前言
Nginx是什么?
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,作为一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器 。
什么是反向代理?
反向代理是指服务器收到客户端的请求后,将请求转发给后端的服务器,然后将后端服务器的响应返回给客户端。在Nginx中,可以通过配置反向代理来实现负载均衡、缓存、SSL终端等功能。
Nginx应用
nginx主要用于处理“高并发”(就是服务器在短时间内遇到大量操作请求处理),处理数据量大的WEB。
“打个比方你开一个小店铺有两位员工,中午的时候来了一万个人来店里吃饭,平时店里也就容纳20个顾客来吃饭一下次来这么多人你的店不得挤爆了还要在中午休息的时间内做好饭菜,两名员工炒个菜能把锅子炒坏”
准备工作
三台linux主机:
- centos7一台取名A主机 IP:192.168.179.143;
- centos7一台取名B主机 IP:192.168.179.144;
- centos7一台取名代理主机;这是一台能外网服务器有公网IP 在这里可以一个便宜的主机——————》》》腾讯云
域名一个:
我们可以在网络上申请一个免费的域名,如果你只是想在局域网测试话完全没有必要申请域名我们只需要修改DNS即可。
FRP:
内网主机我们使用frp来进行一个内网穿透模拟两台外网主机。
反向代理:代理的是服务端,让用户无感知地浏览服务器资源如图1:客户(可以是多个)访问我们的域名"www.demo(测试).com"指向代理服务器再由代理服务器负载均衡到A主机和B主机(也可以分配权重)。
这里简单了解内置策略:
轮询:有一个1,2,3,4服务处理我们的A主机先开始处理1,B主机处理2,再开始A主机3
B主机4。
加权轮询:
就是有多个苹果你一个我一个前提下我帅一点我就多分一个苹果(实际情况下还是有一点不同是根据权重来分配)。
Ip hash:
根据用户请求过来的ip再映射成hash值分配到一个特定的服务器里面。
Nginx安装
由于这里三台主机都没有安装Nginx,在安装过程中三台主机是一样的操作。
1.安装依赖
如图2
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
2.下载Nginx
wget https://nginx.org/download/nginx-1.16.1.tar.gz
如果不存在命令那先就安装wget,如图3表示下载成功。
yum install -y wget
3.解压文件
我直接解压到当前目录吧!
tar -zxvf nginx-1.16.1.tar.gz
解压完后使用”ls“命令可以看到nginx解压文件如图4。
4.编译环境
一次输入以下命令:
cd nginx-1.16.1/
./configure --prefix=/usr/local/nginx
--prefix 指定的安装目录这里指定/usr/local/nginx目录
如图5编译环境成功我需要注意一些安装,配置目录我们后期会用到。
5.安装
如图6成功安装
make & make install
7.启动
我们进入目录/usr/local/nginx/sbin启动:
cd /usr/local/nginx/sbin
./nginx
如图7查看nginx任务:ps -aux | nginx
8.防火墙配置
我们开放80 443端口。
firewall-cmd --add-port=80/tcp --add-port=443/tcp --permanent
firewall-cmd --reload
如图8可以看到运行nginx成功
Nginx常用命令
要在/usr/local/nginx/sbin目录运行哦!也可以这样不要进入目录直接运行哎算啦!
启动:
./nginx
停止:
./nginx -s stop
重新加载:
./nginx -s reload
检查配置文件
./nginx -t
有这些就够了。
开始部署
一,配置frp穿透工具
-
三台主机安装操纵同理
下载:
wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
解压:
tar -zxvf frp_0.33.0_linux_amd64.tar.gz ##解压
-
反向代理主机frp设置
进入目录:
cd frp_0.33.0_linux_amd64
编辑文件:
vim frps.ini
写入以下文件:
[common]
##于客户端和服务端连接的端口
bind_port = 7000
dashboard_port = 7500
authentication_timeout = 0
token = asddemo@1111
dashboard_user = demo
dashboard_pwd = demo123@
输入命令启动:
./frps -c frps.ini
-
A主机frp设置
进入目录
cd frp_0.33.0_linux_amd64/
编辑frpc.ini
server_addr = 39.99.xx.xx
server_port = 7000
authentication_method = token
authentication_new_work_conns =true
token = asddemo@1111
tls_enable = true
[RDP]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3389
[web1]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 8080
-
B主机frp设置
编辑文件:
server_addr = 39.99.xx.xx
server_port = 7000
authentication_method = token
authentication_new_work_conns =true
token = asddemo@1111
tls_enable = true
[RDP2]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3388
[web2]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 8081
39.99.xx.xx 是我们的代理主机。
我在A,B主机上连接如图9表示启动成功。
./frpc -c frpc.ini
如图10开到我们已经把内网AB两主机穿透到外网了
有关frp教程看:https://blog.csdn.net/aicsswo/article/details/136157901?spm=1001.2014.3001.5502
二,反向代理主机配置
-
编辑ngnx.conf文件
vim /usr/local/nginx/conf/nginx.conf
方框必须一样如图11就添加两个地方。
weight=1 代表权重1 谁的权重大接受负载就越多。
-
启动nginx
进入/usr/local/nginx/sbin目录先停止nginx服务器:
cd /usr/local/nginx/sbin
停止nginx:
./nginx -s stop
在启动:
./nginx
重新加载配置文件:
./nginx -s reload
三,A,B主机nginx设置
a,b主机nginx只要启动即可,我简单把index.html文件更改了方便我们观察。
cd /usr/local/nginx/html
编辑index.html
vim index.html
如图12代表A主机:
在到B主机编辑同理步骤如图12
-
测试
当我访问代理主机域名第一次刷星的时候如图13,负载在主机A,第二次刷新在主机B如图14。
无法保存问题解决:
当保存是输入:”:wq“ 提示权限不足如图,我们是root权限用强制保存” :wq! “。
80端口被占用:
fuser -k 80/tcp #关闭占用80端口的程序
四,总结
测试总归还是测试,在实际情况下会遇到各种问题,现实也不是这么玩的。