目录
1.nginx的简单介绍
nginx代理分为正向代理和反向代理
正向代理就是将代理的web页面通过代理服务器直接访问到
而反向代理 负载均衡 一般是一个代理服务器后面都有其他几台服务器 每次访问都会呈现不同的内容
2.正向代理的应用场景
2.1做访问控制
例如公司或者学校对职工和学生做访问控制 避免访问到不良网站
2.2审计
代理服务器上过滤掉不合适的网站和信息
2.3负载分散
在多个服务器之间分配客户端请求,以平衡负载并提高可用性
2.4隐私保护和匿名性
用户可以通过正向代理隐藏自己的 IP 地址,保护自己的隐私,防止被跟踪
3.反向代理的应用场景如下
3.1.负载均衡
反向代理可以在多个服务器之间分发请求,平衡负载,提高网站或应用的性能和可靠性。
2.缓存静态内容
反向代理可以缓存静态内容(如图片、CSS、JavaScript 文件),减少后端服务器的负载
3.压缩和优化内容
反向代理可以对内容进行压缩,优化图片和代码,以加快内容的加载速度
4.提供故障转移
如果后端服务器发生故障,反向代理可以将流量重定向到健康的服务器,提高系统的可用性。
5.安全性和匿名性
反向代理可以隐藏后端服务器的细节,为服务器提供额外的安全层,防止直接暴露给互联网。
4.正向代理
环境概述
角色 | 主机名 | ip |
---|---|---|
代理 | lb01 | 10.0.0.8 |
web | web01 | 10.0.0.7 |
域名 proxy.oldboylinux.cn
站点目录 /app/code/proxy
4.1web端
创建目录
mkdir -p /app/code/proxy/
创建索引文件 并写入内容
vim /app/code/proxy/index.html
10.0.0.8 proxy.oldboylinux.cn.conf
创建配置文件 写入配置
server {
listen 80;
server_name proxy.oldboylinux.cn;
root /app/code/proxy;
error_log /var/log/nginx/proxy_error.log notice;
access_log /var/log/nginx/proxy_error.log main;
location / {
index index.html;
}
}
重载服务
systemctl relaod nginx
4.2lb01代理服务器配置
书写配置
server {
listen 80;
server_name proxy.oldboylinux.cn;
root /app/code/proxy;
error_log /var/log/nginx/proxy_error.log notice;
access_log /var/log/nginx/proxy_error.log main;
location / {
proxy_pass http://10.0.0.7:80 ;
proxy_set_header Host $http_host;
}
}
nginx -t 检查
重载服务
systemctl relaod nginx
在lb端进行测试
curl 0:80
10.0.0.8 proxy.oldboylinux.cn web01
是这个结果说明配置无误
5.反向代理
需要两台web端的机器 配置内容格式 如下
server {
listen 80;
server_name proxy.oldboylinux.cn;
root /app/code/proxy;
error_log /var/log/nginx/proxy_error.log notice;
access_log /var/log/nginx/proxy_error.log main;
location / {
index index.html;
}
}
只需要改变index索引文件的内容
随后再nginx代理机器上写入如下配置
upstream cfg_pools {
server 10.0.0.7:80;
server 10.0.0.8:80;
}
server {
listen 80;
server_name cfg.oldboylinux.cn;
error_log /var/log/nginx/cfg-error.log notice;
access_log /var/log/nginx/cfg-access.log main;
location / {
proxy_pass http://cfg_pools;
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;
}
}
最后测试出来效果是curl两次出现的是两个结果 一个是web01index.html中的 另一个是web02 index,html中的