nginx随笔
2018年04月28日170 browse
一:反向代理
nginx实现反向代理非常简单,使用proxy_pass配置
案例:
把所有.js结尾的文件指向到1234端口
location ~* .js$ {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass 127.0.0.1:1234;
}
一些反向代理的配置
proxy_set_header Host $host;
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
二:负载均衡
nginx实现负载均衡也比较简单使用,使用proxy_pass+upstram配置
参数说明:
weight=number:设置服务器的权重,默认情况下为1
max_conns=number:限制到代理服务器的同时活动连接的最大数量,默认为0
max_fails=number:服务器通信的失败尝试次数
fail_timeout=number:服务器通信失败超时时间,默认为10
backup:将服务器标记为备份服务器。它将在主服务器不可用时传递请求
down:将服务器标记为永久不可用
案例:
upstream strameserver {
server 127.0.0.1:8081 weight=1 max_fails=4 fail_timeout=5;
server 127.0.0.1:8082 weight=1 max_fails=4 fail_timeout=5;
}
location / {
proxy_pass http://strameserver;
}
默认的均衡算法是针对后端服务器的顺序,逐个请求。
三:高性能服务的架构
对于高性能网站,请求量大,如何支撑?
1、减少http请求量,即通常所说的合并请求
2、客户端尽可能多的使用一系列缓存技巧
3、使用cdn进行加速,响应请求
4、web服务器设置Expires等缓存信息
5、剩下的不可避免的请求使用服务器集群+负载均衡来支撑
大概认知:
既然响应是不可避免,我们要做的是把工作内容“平均”分配给每台服务器。
最理想的状态,每台服务器的性能充分被利用。
根据项目情况选择相应服务器,计算密集,I/O密集 ,进程密集等。
根据服务器的情况可以进行相应的分类,有的做静态资源服务器,有的做内存缓存服务器,有的做数据库服务器,有的做业务进程服务器等等,根据自身情况进行分类。
测试工具:
可使用Apache ab进行测试,案例:
ab -n 800 -c 800 http://localhost/
(-n发出800个请求,-c模拟800并发,相当800人同时访问,后面是测试url)
ab -t 60 -c 100 http://localhost/
在60秒内发请求,一次100个请求。
或使用webbench
webbench -c 300 -t 60 http://localhost/
nginx配置,设置worker process进程的最大并发链接数
events {
worker_connections 10000;
}
最大链接数
查看
more /proc/sys/net/core/somaxconn
设置
echo 1000 /proc/sys/net/core/somaxconn
tcp
查看
cat /proc/sys/net/ipv4/tcp_tw_recycle
设置
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
请求限制
查看
more /proc/sys/net/ipv4/tcp_syncookies
设置
echo 0 > /proc/sys/net/ipv4/tcp_syncookies
允许文件打开数
查看
ulimit -n
设置
ulimit -n 50000
nginx配置,更改worker进程的最大打开文件数限制
worker_processes auto;
worker_rlimit_nofile 10000;
events {
worker_connections 10000;
}
nginx配置,高并发keepalive_timeout尽量设置的更小
keepalive_timeout 0;
博主
zane
发表于 2018-04-28 10:56:25,添加在了 nginx
标签下打赏
您的支持将鼓励我继续努力与分享。


评论
正在加载验证码......