因为目前项目中服务多是用nginx进行均衡负载的,所以这里记录下,为以后备查。
如下:
nginx安装目录:/root/softwate/nginx
nginx可执行文件目录:/root/softwate/nginx/sbin/nginx
nginx配置文件目录:/root/softwate/nginx/conf/nginx.conf
nginx的配置文件如下:
#用户,一般不用配置,我测试用的root 需要指定下rootuser 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.confnginx: the configuration file /root/softwate/nginx/conf/nginx.conf syntax is oknginx: 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 nginxroot 30262 1 0 10:32 ? 00:00:00 nginx: master process /root/softwate/nginx/sbin/nginx -c /root/softwate/nginx/conf/nginx.confroot 30263 30262 0 10:32 ? 00:00:00 nginx: worker processroot 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文件。就是测试,内容随便啦。。。
nginx测试首页 这是ng访问测试
然后,浏览器访问ng对应的外网ip和端口口号80(端口也可以不加). 浏览器正常显示nginx测试首页,说明配置正常。
其他的服务均衡负载测试,就要和自己服务配合着来了,这里就不放了。