centos6 搭建nginx实现负载均衡
一、安装nginx
监控检查的安装:https://github.com/yaoweibin/nginx_upstream_check_module
编译参数
./configure \
--prefix=/opt/nginx \
--user=nginx \
--group=nginx \
--conf-path=/opt/nginx/conf/nginx.conf \
--error-log-path=/opt/nginx/log/error.log \
--http-log-path=/opt/nginx/log/access.log \
--http-client-body-temp-path=/opt/nginx/client/ \
--http-proxy-temp-path=/opt/nginx/proxy/ \
--http-fastcgi-temp-path=/opt/nginx/fcgi/ \
--http-uwsgi-temp-path=/opt/nginx/uwsgi \
--http-scgi-temp-path=/opt/nginx/scgi --with-pcre \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_realip_module \
--pid-path=/opt/nginx/nginx.pid \
--with-file-aio --with-http_image_filter_module \
--add-module=/opt/nginx_upstream_check_module-master \ # 健康检查的模块
--with-stream # tcp 协议的模块
1)准备2台服务器,环境一样,同时执行
rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm
yum install nginx -y
vim /etc/sysconfig/iptables 添加80端口
/etc/init.d/iptables restart
nginx 启动
[root@nginx-server nginx]# ps -ef|grep nginx
root 1439 1 0 19:48 ? 00:00:00 nginx: master process nginx
nginx 1440 1439 0 19:48 ? 00:00:00 nginx: worker process
root 1644 1325 0 20:10 pts/0 00:00:00 grep nginx
二、修改默认访问页
1)关键配置文件的路径
/usr/share/nginx nginx的前端配置信息
/etc/nginx nginx的相关配置脚本文件
2)nginx的重要命令
nginx -t 检查语法
nginx 启动
nginx -s reload 平滑重启
3)修改其中一个的默认主页,便于观察实现负载均衡
[root@nginx-server ~]# cat /usr/share/nginx/html/index.html
I am 192.168.1.29
4)nginx的重点配置文件
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_time 65;
server {
listen 80; # 192.168.1.29:80
server_name www.abcdefg.org;
location / {
root html/www;
index index.html index.htm;
}
}
}
一个server标签则是一个标签
ip映射:192.168.1.29 www.abcdefg.org
三、修改配置文件,实现nginx代理
1)nginx 代理测试(访问外网实质指向内网服务器)。。vhosts是已经做好的代理文件
[root@admin vhosts]# cat xueying.conf
server {
listen ;
server_name 110.110.110.110;
charset utf8; location / {
proxy_pass http://192.168.1.222;
}
}
1.1)代理tcp协议
stream { upstream cloudsocket {
hash $remote_addr consistent;
# $binary_remote_addr;
server 10.0.5.14: weight= max_fails= fail_timeout=30s;
}
server {
listen ;#数据库服务器监听端口
proxy_connect_timeout 10s;
proxy_timeout 300s;#设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。
proxy_pass cloudsocket;
}
}
2)以nginx服务代理nginx为例
[root@nginx-server conf.d]# cat test_server.conf
upstream 192.168.1.29 {
server 192.168.1.25:80;
} server {
listen 80;
server_name 192.168.1.29;
charset utf8; location / {
proxy_pass http://192.168.1.29;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
访问 192.168.1.29 实质指向了192.168.1.25:80
3)以nginx代理Tomcat服务为例
[root@nginx-server conf.d]# cat test_server.conf
upstream 192.168.1.29 {
server 192.168.1.40:8080;
} server {
listen 80;
server_name 192.168.1.29;
charset utf8; location / {
proxy_pass http://192.168.1.29;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
访问 192.168.1.29 实质指向了192.168.1.40:8080
四、实现nginx负载均衡
1)测试情况一。nginx和tomcat的负载均衡
[root@nginx-server conf.d]# cat test_server.conf
upstream 192.168.1.29 {
server 192.168.1.25:80;
server 192.168.1.40:8080;
} server {
listen 80;
server_name 192.168.1.29;
charset utf8; location / {
proxy_pass http://192.168.1.29;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:6969;
client_max_body_size 20m;
}
location配置
2) 更换端口实现负载均衡
upstream nginxserver1 {
server 192.168.10.25:;
server 192.168.10.26:;
} server {
listen ;
server_name 192.168.10.5;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://nginxserver1;
index index.html index.htm;
}
}
五、添加负载均衡的健康检查
upstream 192.168.10.100 {
server 192.168.10.142:; #web01
server 192.168.10.100:; # web28
check interval= rise= fall= timeout= type=http port=;
#check interval= rise= fall= timeout= type=http;
#check_http_send "GET /index.php HTTP/1.1\r\nHost: 10.19.145.144\r\n\r\n";
#check_http_expect_alive http_2xx http_3xx ;
} server {
listen ;
server_name 192.168.10.100;
charset utf8; access_log /data/log/mytestpvz2/cloud.pvz2android.popcap.com.cn_access.log main;
error_log /data/log/mytestpvz2/cloud.pvz2android.popcap.com.cn_error.log; location / {
proxy_pass http://192.168.10.100;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
六、nginx日志切割
1)nginx日志切割的原理
把每天的日志重新命名为日期日志
[root@nginx-server ~]# ls /var/log/nginx/
access.log error.log
[root@nginx-server ~]# cd /var/log/nginx/
[root@nginx-server ~]# mv access.log access_$(date +%F -d -1day).log
[root@nginx-server nginx]# nginx -s reload
[root@nginx-server nginx]# ls
access_2018-02-27.log access.log error.log
2)写日志切割的脚本
[root@nginx-server nginx]# cd /var/log/nginx/
[root@nginx-server nginx]# rm -rf access_2018-02-27.log
[root@nginx-server nginx]# cat cut_nginx_log.sh
#!/bin/bash
nginx -s reload
cd /var/log/nginx &&\
/bin/mv access.log access_$(date +%F -d -1day).log
[root@nginx-server nginx]# nginx -s reload
[root@nginx-server nginx]# sh cut_nginx_log.sh
[root@nginx-server nginx]# ls
access_2018-02-27.log cut_nginx_log.sh error.log
# 写定时任务
[root@nginx-server nginx]# crontab -e
00 00 * * * /bin/sh /var/log/nginx/cut_nginx_log.sh >/dev/null 2>&1
3.1)日志切割优化
#!/bin/bash
/bin/mv /data/log/nginx/cloud_access.log /data/log/nginx/cloud_access_$(date +%F -d -1day).log
/bin/mv /data/log/nginx/cloud_error.log /data/log/nginx/cloud_error_$(date +%F -d -1day).log
/opt/nginx/sbin/nginx -s reload # cloud_access_2019--.log #格式 #优化文件压缩
/bin/mv /data/log/msg/messages /data/log/msg/messages-$(date +%Y%m%d -d -1day)
service rsyslog restart
gzip /data/log/msg/messages-$(date +%Y%m%d -d -1day) # messages-.gz 格式
opt/cut_log.sh
3.2)写入定时任务
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/ # For details see man crontabs # Example of job definition:
# .---------------- minute ( - )
# | .------------- hour ( - )
# | | .---------- day of month ( - )
# | | | .------- month ( - ) OR jan,feb,mar,apr ...
# | | | | .---- day of week ( - ) (Sunday= or ) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed * * * root /bin/sh /opt/cut_log.sh >/dev/null >&
/etc/crontab
添加最后一行:00 00 * * * root /bin/sh /opt/cut_nginx_log.sh >/dev/null 2>&1
systemctl restart crond.service 重启定时任务
七、nginx代理django-web框架
1)修改nginx配置文件
[root@tomcat conf.d]# cat test.conf
upstream 192.168.1.40 {
#server 192.168.1.40:8080;
server 127.0.0.1:8000;
} server {
listen 80;
server_name 192.168.1.40;
charset utf8; location / {
proxy_pass http://192.168.1.40;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
2)添加被允许访问的IP
[root@tomcat demo1]# vim settings.py
.............
ALLOWED_HOSTS = ['192.168.1.40']
.............
3)浏览器访问验证
七、扩展知识。网络代理
现象:有2台互通的机器,但是有一台有网络,有一台,没有网络,因为没有dns
如何让没有网络的机器能使用yum源
1)在有网络的机器上面配置nginx文件
server {
resolver 192.168.10.1 192.168.2.1; # dns
resolver_timeout 5s; listen ;
server_name 0.0.0.0;
access_log /data/log/nginx/myjumpserver_access.log main;
error_log /data/log/nginx/myjumpserver_error.log;
location / {
proxy_pass $scheme://$host$request_uri;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $Host;
proxy_set_header X-Forwarder-For $Host;
proxy_buffering on;
proxy_max_temp_file_size ;
proxy_cache_valid 10m;
proxy_cache_valid 1h;
proxy_cache_valid any 1m;
# include /data/app/nginx/conf/proxy.conf;
}
}
检查语法,重启
2)在另一台没有网络的机器上,加上上面机器的代码配置文件
[root@cmdb ~]# vim /etc/yum.conf
proxy=http://192.168.10.101:8000
八、tcp代理
user nginx;
worker_processes ;
worker_cpu_affinity ;
worker_rlimit_nofile ; pid /var/run/nginx.pid; events {
worker_connections ;
use epoll;
multi_accept off;
} http {
include /opt/lnmp_zabbix/nginx/conf/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"';
log_format mtr '$remote_addr [$time_local] "$request_uri" '
'$status "$http_referer" '
'"$http_user_agent" "$host"'; sendfile on; keepalive_timeout ;
client_header_timeout ;
client_body_timeout ;
server_tokens off;
tcp_nodelay on; gzip on; include /opt/lnmp_zabbix/nginx/conf/vhost/*.conf; fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
#fastcgi_buffer_size 16k;
#fastcgi_buffers 16 16k;
#fastcgi_busy_buffers_size 16k;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k; server_names_hash_bucket_size 128;
client_header_buffer_size 2k;
large_client_header_buffers 4 4k;
client_max_body_size 100k;
open_file_cache max=51200 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1;
} stream { upstream cloudsocket {
hash $remote_addr consistent;
# $binary_remote_addr;
server 192.192.213.69:3306 weight=5 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
proxy_connect_timeout 10s;
proxy_timeout 300s;
proxy_pass cloudsocket;
}
}
centos6 搭建nginx实现负载均衡的更多相关文章
- 【原创】搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群
为什么移除首页?哪里不符合要求?倒是回我邮件啊! 一.环境搭建 Linux下Vagrant搭建Tomcat7.Java7 二.Nginx的安装配置与测试 *虚拟机下转至root sudo -i 1)下 ...
- 搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群
一.环境搭建 Linux下Vagrant搭建Tomcat7.Java7 二.Nginx的安装配置与测试 *虚拟机下转至root sudo -i 1)下载并解压(目前官网最新版本) 创建安装目录:mkd ...
- Redhat/CentOS7-环境虚拟机简单搭建Nginx+Tomcat负载均衡集群
Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选.由于Tomcat处理静态HTML的能力运不及Apache或者Nginx,所以Tomcat ...
- Windows下搭建Nginx实现负载均衡
环境:本次测试,使用两台电脑,分别是 192.168.0.1,192.168.0.2. 其中Nginx也部署在 192.168.0.1 电脑上,所以 PC1 的IIS端口不能使用80,因为Nginx需 ...
- CentOS6.5+nginx+tomcat负载均衡集群
思路: 1.安装jdk 2.安装tomcat 3.安装nginx依赖库 4.安装nginx 5.nginx+2个tomcat集群 一:网络拓扑
- Centos7.2下基于Nginx+Keepalived搭建高可用负载均衡(一.基于Keepalived搭建HA体系)
说明 本文只为方便日后查阅,不对一些概念再做赘述,网上都有很多明确的解释,也请大家先了解相关概念. 两台搭建HA的服务器是华为云上的ECS(不要忘记开通VPC,保证我们的服务器都处在一个内网环境),由 ...
- Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)
原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...
- Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)-转帖篇
原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...
- Nginx简单介绍以及linux下使用Nginx进行负载均衡的搭建
1.Nginx简介 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5 ...
随机推荐
- Navicat连接mysql(高级选项配置)
.对于服务器上的mysql中存在多个数据库,我们如果全部连接显示,但是平时使用的只有一个库,那么查询的速度会很慢的.所以,今天和大师兄学习了一招.只连接一个自己使用的数据库.配合高级设置,提升很多. ...
- ZOJ2018/4月月赛G题Traffic Light(广搜)
题意:首先T组数据,每组数据包括:第一行:一个n,m,然后下面有一个n行m列的01矩阵. 最后一行输入四个数字,分别是起点的横纵坐标,终点的横纵坐标.询问从起点到终点,最少要几步,如果到不了输出-1 ...
- Shell教程 之printf命令
上一章节我们学习了 Shell 的 echo 命令,本章节我们来学习 Shell 的另一个输出命令 printf. printf 命令模仿 C 程序库(library)里的 printf() 程序. ...
- js,JavaScript,a标签onclick传递参数不对,A标签调用js函数写法总结
错误示例: <a href="javascript:waterLineEdit(${goods.goods_id})" >修改 </a> <!-- 浏 ...
- 【python】入门指南:控制语句
条件控制 if,if-else,if-elseif-else #!/bin/python a = 'test' if a == 'test': print('a is %s' %(a)) else: ...
- linux命令学习之:cp
cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一. 如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若同时指定多个文 ...
- Activity 的启动过程深入学习
手机应用也是一个app,每一个应用的icon都罗列在Launcher上,点击icon触发onItemClick事件. 我们要启动「淘宝」这个App,首先我们要在清单文件定义默认启动的Activity信 ...
- Task.WaitAll代替WaitHandle.WaitAll
Task.Waitall阻塞了当前线程直到全完.whenall开启个新监控线程去判读括号里的所有线程执行情况并立即返回,等都完成了就退出监控线程并返回监控数据. task.Result会等待异步方法返 ...
- netcore webapi 用户 'IIS APPPOOL\无托管代码' 登录失败
配置在iis上,除了环境配置错误的原因还有一种可能是连接字符串的问题,iis要求使用sql server的sa或者其他登录用户. ps:连接字符串: "Default": &qu ...
- linq 动态判断
以前要不是使用扩展方法 要么使用如(t==2&&判断条件)||(s==1&&判断条件) 其实可以简单的实现扩展一个whereIf即可(abp实现),如下所示 ··· / ...