因为目前项目中服务多是用nginx进行均衡负载的,所以这里记录下,为以后备查。
如下:
nginx安装目录:/root/softwate/nginx
nginx可执行文件目录:/root/softwate/nginx/sbin/nginx
nginx配置文件目录:/root/softwate/nginx/conf/nginx.conf
nginx的配置文件如下:
#用户,一般不用配置,我测试用的root 需要指定下root
user root;
#user nobody;
#启动进程数量,一般和主机内核数量一致
worker_processes 1;
#错误日志打印
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
#单个后台worker process进程的最大并发链接数
worker_connections 1024;
}
http {
#设定mime类型,类型由mime.type文件定义
include mime.types;
default_type application/octet-stream;
#设置日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
#sendfile sendfile: 设置为on表示启动高效传输文件的模式
#对于普通应用,设为 on,
#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,
#这个参数不开启,会先在用户空间(Nginx进程空间)申请一个buffer
#用read函数把数据从磁盘读到cache,再从cache读取到用户空间的buffer
#再用write函数把数据从用户空间的buffer写入到内核的buffer,最后到tcp socket
#开启这个参数后可以让数据不用经过用户buffer
sendfile on;
#tcp_nopush on;
#连接超时时间
#keepalive_timeout 0;
keepalive_timeout 65;
#开启gzip压缩
#gzip on;
#upstream服务器,轮询机制,均衡负载,以权重的方式分发,weight是权重
#权重越大则分配的可能行越大
#这里后端服务只有一个,所以都会分发到哪一个上
upstream test {
server 172.21.0.5:8081 weight=10;
}
#虚拟主机配置
server {
#监听80端口
listen 80;
#定义访问地址,可以有多个,用空格分隔
server_name localhost;
#charset koi8-r;
#虚拟主机的访问日志
#access_log logs/host.access.log main;
#默认请求
location / {
#root html;
#默认访问目录
root /root/html;
#指定默认访问页面
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
#配置访问静态文件
#配置访问url中包含test的静态文件
location ~ ^/test/.*\.(gif|bmp|jpg|jpeg|png|swf|GIF|BMP|JPG|JPEG|PNG)$ {
#文件目录
root /root/html;
}
#启用反向代理,配置服务
#分发处理带有test的url请求
location ~ /(test)/.*$ {
#分发到upstream服务test ,也可以直接指定http://ip:port 如172.21.0.5:8081
proxy_pass http://test;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Host $host:$server_port;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header connect "";
#以下可选,为反向代理配置
client_max_body_size 30m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 1024k; #缓冲区代理缓冲用户端请求的最大字节数
proxy_connect_timeout 60; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 120; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 120; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 128k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 8 128k; #proxy_buffers缓冲区,网页平均在32k以下的设置
proxy_busy_buffers_size 128k; #高负荷下缓冲大小(一般proxy_buffers*2)
}
}
}
nginx服务的操作命令:
以下命令都是按照我安装的nginx目录操作,具体要根据自己的实际修改。
1、验证nginx的配置是否有问题。在启动nginx或者重新加载ng配置之前,要检测nginx的配置文件是否正常。特别是线上一般都是重新加载ng配置的,防止出问题,一定要检测。
命令:/root/softwate/nginx/sbin/nginx -t -c /root/softwate/nginx/conf/nginx.conf
[root@VM_0_5_centos sbin]# /root/softwate/nginx/sbin/nginx -t -c /root/softwate/nginx/conf/nginx.conf
nginx: the configuration file /root/softwate/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /root/softwate/nginx/conf/nginx.conf test is successful
[root@VM_0_5_centos sbin]#
2、启动nginx。
命令:/root/softwate/nginx/sbin/nginx -c /root/softwate/nginx/conf/nginx.conf
启动后,一般没有提示,可以自行查看nginx进程
[root@VM_0_5_centos sbin]# /root/softwate/nginx/sbin/nginx -c /root/softwate/nginx/conf/nginx.conf
[root@VM_0_5_centos sbin]#
[root@VM_0_5_centos sbin]# ps -ef | grep nginx
root 30262 1 0 10:32 ? 00:00:00 nginx: master process /root/softwate/nginx/sbin/nginx -c /root/softwate/nginx/conf/nginx.conf
root 30263 30262 0 10:32 ? 00:00:00 nginx: worker process
root 30267 29966 0 10:33 pts/0 00:00:00 grep --color=auto nginx
[root@VM_0_5_centos sbin]#
3、重新加载nginx配置。一般修改nginx配置后,重新加载即可,不需要重启。
命令:root/softwate/nginx/sbin/nginx -s reload
[root@VM_0_5_centos sbin]# /root/softwate/nginx/sbin/nginx -s reload
[root@VM_0_5_centos sbin]#
重新加载后,一般也没有直接提示,但在是ng的日志中,会有一条日志记录。总之,不熟悉的话,线上要修改前,要做好备份和配置文件校验。
测试:
在nginx默认访问目录/root/html下,生成index.html文件。就是测试,内容随便啦。。。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>nginx测试首页</title>
</head>
<body>
<p>这是ng访问测试</p>
</body>
</html>
然后,浏览器访问ng对应的外网ip和端口口号80(端口也可以不加). 浏览器正常显示nginx测试首页,说明配置正常。
其他的服务均衡负载测试,就要和自己服务配合着来了,这里就不放了。
来源:oschina
链接:https://my.oschina.net/u/2972417/blog/1628757