负载均衡动静页面分离
思路 将动态静态页面分开建立主机表 然后用location进行匹配执行分配访问请求
负载均衡服务器配置:
upstream dynamic {
server 10.0.0.7:80;
}
upstream static {
server 10.0.0.8:80;
}
upstream upload {
server 10.0.0.9:80;
}
server {
listen 80;
server_name localhost;
location /dynamic/ {
proxy_pass http://dynamic;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_next_upstream error timeout invalid_header http_404;
}
location /static/ {
proxy_pass http://static;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_next_upstream error timeout invalid_header http_404;
}
location /upload {
proxy_pass http://upload;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_next_upstream error timeout invalid_header http_404;
}
}
利用负载均衡 实现访问时显示不同网页(手机端or电脑端)
判断请求信息中 主机信息 是使用什么设备进行的访问 根据不同设备返回不同网页
upstream chrome { #c 设置主机表
server 10.0.0.7:80;
}
upstream Android {
server 10.0.0.8:80;
}
location / {
if ($http_user_agent ~* chrome) { #c if判断功能 日志中访问设备信息是否匹配chrome
proxy_pass http://chrome; #c 如果成立 将数据传输给指定服务器显示浏览器页面
}
if ($http_user_agent ~* Android) { #c if判断功能 判断是否匹配Android
proxy_pass http://iphone;
}
proxy_pass http://default;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_next_upstream error timeout invalid_header http_404;
}
#c $http_user_agent 调取日志主机信息中 访问设备信息
第6章 nginx 4层负载
nginx四层负载利用stream模块监控端口进行反向代理 他和http模块是平级的
检查nginx是否安装了stream模块
nginx -V | grep stream
如果没有需要重新编译安装
stream {
upstream ports {
server 10.0.0.7:8888; #c 向后抛的端口
server 10.0.0.8:9999; #c nc -kl 9999 NC用于看端口的
}
server {
listen 996; #c 监控访问端口
proxy_pass ports; #c 直接向后仍
}
}
第7章 企业中服务网络安全访问配置
目的: 尽可能不暴露企业服务器IP地址给用户
第一步: 修改负载均衡配置文件
upstream oldboy {
server 10.0.0.7:80;
server 10.0.0.8:80;
server 10.0.0.9:80;
}
server {
listen 10.0.0.3:80; #c 只监听指定ip的访问请求 (注意要自己网卡有的IP)
server_name localhost;
location / {
proxy_pass http://oldboy;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
第二步修改内核信息 修改为允许监听本地网卡没有的IP地址
echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf
修改内核信息
sysctl -p
刷新内核
注意项:
(1) nginx程序涉及到IP地址修改,必须重启nginx
(2) 监听的地址必须是本地网卡上有的地址
如何监听网卡上没有的地址:
解决方法:
echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf
sysctl -p