nginx负载均衡
upstream负载均衡,加在http下
upstream backend{
server 127.0.0.1:8080 weight=1; #一次8080
server 127.0.0.1:8081 weight=2; #两次8081
#两个服务器崩溃,备用服务器
#server backup.example.com:8080 weight=1 backup;
}
server {
listen 80;
server_name backend;
location / {
#backend不要加斜杠,拼接location 斜杠/
#如果backend包含 斜杠/ 则会出现 双斜杠//
proxy_pass http://backend;
index index.html index.htm;
}
}
运行,并重载nginx.conf
./nginx -s reload
防盗链,如果不是从hawkii.com来的,则返回403代码
location /img/ { #img是相对目录,是html目录下的img目录
valid_referers none blocked server_names *.hawkii.com ; #允许访问该目录的域名或IP
if ($invalid_referer) {return 403;} #不允许访问返回403
}
#打开防火墙80端口访问限制
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
#查看已经开放端口号
firewall-cmd --list-all
反向代理
访问
http://127.0.0.1/edu/
#映射到 http://127.0.0.1:8081/edu/;
http://127.0.0.1/vod/
#映射到 http://127.0.0.1:8080/vod/;
server {
listen 80;
#本机在局域网地址
server_name 172.16.143.10;
#通配符~ 包含/edu/
location ~ /edu/ {
proxy_pass http://127.0.0.1:8081;
}
location ~ /vod/ {
proxy_pass http://127.0.0.1:8080;
}
高可用
虚拟ip绑定多个nginx服务器
- 准备两台linux系统(两台虚拟机)
- 两台服务器都安装nginx和keepalived
- 虚拟ip到nginx,配置keepalived——keepalived.conf,设置virtual_ipaddress
- 编写一个检测nginx是否运行的脚本,nginx_check.sh
nginx原理
一个master,多个worker
worker数量和服务器cpu数量匹配最为适宜
每个worker一个独立进程
nginx的worker_connection的设置,两个或者四个,因为需要client来回,tomcat来回。
nginx同redis一样采用多路复用io机制,提高最大性能
nginx一个master和四个worker,每个worker支持最大连接数是1024,支持最大并发数是多少?
- 静态连接:work_connection * work_process /2
- 反向代理:work_connection * work_process /4