关于代理
正向代理:
客户明确知道自己访问的网站是什么
隐藏客户端的信息
客户端和代理服务器 一起的
正向代理最大的特点是客户端非常明确要访问的服务器地址
它代理的是客户端,代客户端发出请求
反向代理
客户户访问一个网站
隐藏服务端的信息
服务端和代理服务器 一起的
反向代理的作用:
(1)保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
(2)负载均衡,通过反向代理服务器来优化网站的负载
一、Nginx的安装与配置
1、安装依赖
gcc安装
yum install -y gcc-c++
PCRE安装:pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。
安装命令:yum install -y pcre pcre-devel
zlib安装:zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装
安装命令:yum install -y zlib zlib-devel
OpenSSL安装:penssl是web安全通信的基石,没有openssl,可以说我们的信息都是在裸奔,所以需要安装
安装命令:yum install -y openssl openssl-devel
如果以上命令执行比较麻烦可以执行如下命令
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
2、安装nginx
(1)上传压缩包到目录 /usr/nginx里面
或者联网直接下载:
wget -c https://nginx.org/download/nginx-1.15.10.tar.gz
(2)解压文件
tar -zxvf nginx-1.15.10.tar.gz
(3)进入到nginx的文件夹下面 进行默认的配置 ./configure
(4) Make && make install
(5)Whereis nginx
查看nginx的位置
(6)启动nginx
切换到 cd /usr/local/nginx/ sbin/ 下
./nginx 启动 (前题防火墙必须关)
./nginx -s reload 重新加载
./nginx -s quit 此方式停止步骤是待nginx进程处理任务完毕进行停止。
[./nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。(粗暴)
(7)查询nginx进程
ps aux|grep -v grep|grep nginx
ps -ef|grep -v grep|grep nginx
(8)此页面表示成功
当问nginx默认的端口号是80
二、配置反向代理
1、打包vue项目
(1)修改配置文件 目的:防止路径出错
(2)路由模式:
Src/router/index.js
进行打包
这是打包好的dist
2、反向代理
将dist上传到linux的文件里
vim nginx.conf修改配置
修改完保存后重新加载
http://192.168.195.33/可以直接访问页面
vim nginx.conf修改配置
访问 192.168.195.33的时候直接指向的是 192.168.195.34:8080
当我们访问nginx服务器的时候 直接指向的是 192.168.195.33:8080 这个地址
location /test2 {
proxy_pass http://192.168.159.34:8899/;
}
3.代理本地localhost:8080/
本地IP地址为172.16.2.76,启动本地的项目
linux是能通本地http://172.16.2.76:8080/user
本地也能通linux中的ip地址
修改nginx.conf的location
浏览器有数据代表成功
三、反向代理2
启动nginx
/usr/local/nginx/sbin/nginx
1、同时代理两个时,根据访问的路径跳转到不同端口的服务器中
nginx.conf添加一个linux的IP地址项目(启动好已打包好的java的jar包Linux03中)
添加好后保存退出vim,启动nginx或者重新加载nginx(/usr/local/nginx/sbin/nginx -s reload)
**打开项目可以看到不同的地址的页面 **192.168.195.33:8080
**访问ngnix的test路径的时候,代理到 **172.16.2.76:8080
** 访问ngnix的默认路径的时候,代理到 **172.16.2.76:8080
2,路径的正则表达式
1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配 成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字 符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。 注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。
四、Nginx配置负载均衡
1、克隆
克隆两个虚拟机这里可以称为服务器(改好IP地址)
一个用于启动nginx,两个用于运行项目
2、启动项目
两个服务器分别4启动项目
3、Nginx配置负载均衡
(1)nginx.conf配置
在http下配置这个(分别为两个启动项目的ip)
aaa为名字,可以更改,改后location的也要改
location ,配置好后重新启动nginx
为了区分两个项目也可以更改一些数据
打开项目,注意访问的是http://192.168.195.33/user
通过代理默认轮询的访问34和35这两个项目
第一次访问
第二次访问,然后依次轮换
4、负载均衡的策略配置
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2、weight
、
(如果有10次访问就会访问9次34,1次35)
weight 代表权重默认为 1,权重越高被分配的客户端越多
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况
3、ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 例如:
upstream aaa{
ip_hash;
server 192.168.159.34:8080 ;
server 192.168.159.34:8081 ;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream aaa{
fair;
server 192.168.159.34:8080 ;
server 192.168.159.34:8081 ;
}
五、动静分离
Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和 静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用 Nginx 处理静态页面,Tomcat 处理动态页面。动静分离从目前实现角度来讲大是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;
配置静态资源:
(1)约定:
静态资源 location / {}
可以访问的到,但数据
(2)也可以不遵循约定
location /名字的时候{
root
}
必须在root对应的目录下面有这个 **名字 ** 的文件夹,root 后面目录就不用写这个文件夹了
location /dist {
root /usr/pro;
index index.html index.htm;
}
访问时也需要加这个名字
(3)也可以任意写名字
起别名,必须把root换成alias,后面的目录正常写
location /aaa {
alias /usr/pro/dist;
index index.html index.htm;
}
alias 访问aaa的时候 其实访问的是 /usr/pro/dist
访问
六、配置nginx开机启动
切换到/lib/systemd/system/目录,创建nginx.service文件vim nginx.service
cd /lib/systemd/system/
vim nginx.service
添加内容如下:
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
配置之后需要使文件生效
systemctl daemon-reload
退出并保存文件,执行systemctl enable nginx.service使nginx开机启动
#开机自启动
systemctl enable nginx.service
#停止开机自启动
systemctl disable nginx.service
#查询当前状态
systemctl status nginx.service
#启动服务
systemctl start nginx.service
#重新启动服务
systemctl restart nginx.service
#停止服务
systemctl stop nginx.service
#重新加载配置
systemctl reload nginx.service
前后端连接
配置好后可以关掉进程重新启动测试
前端需要传数据,main.jsURL改为192.168.195.33/mypro/,然后将前端项目打包上传到linux就可以了
版权归原作者 码农在路上— 所有, 如有侵权,请联系我们删除。