Nginx实现负载均衡
LinuxNginx的启动和关闭命令:
-
nginx程序启动命令:/nginx/sbin/nginx
-
通过信号量来关闭Nginx进程:kill -INT [PID],注意这是Nginx主进程的PID号
-
如果你不想总是查看进程号,可以使用如下命令:kill -INT 'cat logs/nginx.pid'
Nginx信号控制命令:
-
停止nginx程序:/nginx/sbin/nginx -s stop
-
退出nginx程序:/nginx/sbin/nginx -s quit
-
重新打开nginx配置文件:/nginx/sbin/nginx -s reopen
-
重新加载配置文件:/nginx/sbin/nginx -s reload
Nginx配置文件的说明:
worker_processes 1; //表示有1个工作的子进程,可以自行修改,但太大无益,因为要争夺CPU。一般设置为CPU数*核数
event{
worker_connections:1024; //这是指一个子进程最大允许连接数
}
http{
server{
listen 80; //监听端口号
server_name localhost; //监听域名
}
location / {
root html;
index index.html index.htm;
}
}
设置Nginx的日志信息格式:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
写一个shell脚本,实现日志的切割,则脚本文件runlog.sh里面的代码如下:
LOGPATH=/usr/local/nginx/logs/z.com.access.log
BASEPATH=/data/$(date -d yesterday +%Y%m)
mkdir -p $BASEPATH
bak=$BASEPATH/$(date -d yesterday +%Y%m%d%H%M).z.com.access.log
mv $LOGPATH $bak
touch $LOGPATH
kill -USR1 [PID] #重新载入日志文件
运行shell脚本的命令为:sh runlog.sh
然后基于Linux下的crontab写一个定时器,让runlog.sh定时执行:
crontab -e // 编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
*/1 * * * * sh /data/runlog.sh // 每隔一分钟执行runlog.sh文件
参考链接为:http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html
Location详解之精准、一般、正则匹配如下:
localtion = / {
root /usr;
index index.html;
}
localtion / {
root /usr;
index index.html;
}
localtion ~ image {
root /usr;
index index.html;
}
如果我们访问 http://xxx.com/image/logo.png,此时,一般匹配当中的“/”与“/image/ logo.png”匹配;同时,正则匹配当中的“image”与“/image/logo.png”也能匹配,那么谁能发挥作用呢?正则优先级更高,所以正则会发挥作用。
nginx反向代理+负载均衡
-
nginx支持两种用法,一个是proxy,另一个是upstream,分别用来做反向代理和负载均衡;
-
以反向代理为例,nginx不自己处理Ajax的相关请求,而是把Ajax的相关请求转发给apache来处理;
图表示的是传说中的“动静分离”,动静分离不是一个严谨的说法,叫反向代理更规范。
-
反向代理后端如果有多台服务器,自然可形成负载均衡,但proxy_pass不能指向多台服务器;把多台服务器用up_stream指定绑定在一起,并起个组名,然后用proxy_pass指向改组。
-
默认的负载均衡的算法很简单,就是针对后端服务器的顺序逐个请求。也有其他负载均衡算法,如一致性哈希,需要安装第三方模块。以安装ngx_http_upstream_consistent_hash为例。
Nginx高并发思路导图:
新建一个sys_opt.sh,并加入相应的脚本进行运行优化socket系统层面,文件内容如下:
echo 50000 > /proc/sys/net/core/somaxconn
echo 1 > /proc/sys/net/ipv4/tcp_tw_recyle
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
echo 0 > /proc/sys/net/ipv4/tcp_syncookies
注意:对于高并发网站中,应将nginx配置文件当中的keepalive_timeout值设为0,这样有利于http连接的快速地回收利用。
推荐阅读
-
PHP加Nginx实现动态裁剪图片方案_PHP教程
-
Nginx实现集群的负载均衡配置过程解析
-
keepalived结合nginx实现nginx高可用的方法
-
nginx+lua实现简单的waf网页防火墙功能 博客分类: Nginx nginxlua
-
[ZT]基于LVS的Linux负载均衡技术实现 博客分类: 系统 LinuxPHPBBS.netBlog
-
[ZT]基于LVS的Linux负载均衡技术实现 博客分类: 系统 LinuxPHPBBS.netBlog
-
activemq配置组合队列(复制)、负载均衡 博客分类: 工作
-
activemq配置组合队列(复制)、负载均衡 博客分类: 工作
-
在ubuntu上面配置nginx实现反向代理和负载均衡
-
Nginx+tomcat配置集群负载均衡