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 ...
随机推荐
- java执行jar包出错:Unable to access jarfile
java执行jar包出错:Unable to access jarfile 错误的原因有多种: 1.一般都是路径不正确.在Windows中,正确的路径类似于: java -jar "D:\W ...
- CSS3 box-shadow实现纸张的曲线投影效果
一般的投影效果,尤其通过CSS实现的投影效果(无论是CSS3,还是IE滤镜),都是直来直往的.纸张是有卷角的,其投影就是曲面的,如何使用CSS模拟出纸张的卷边曲线投影效果. <div class ...
- ubuntu下java的安装即使用
1.首先在官方网站(点击可以下载)下载最新的JDK,要选用self extracting installer 2.在/usr/下新建java目录,把下载的文件放到这个目录下 sudo mkdir /u ...
- CentOS 查看进程状态
Linux中ps与top命令 ============================================================================ 这两个命令都 ...
- PHPlaravel中从数据库中选择数据是增加时间条件及各种条件
注:附加条件后要加get函数. 1.public function getForDataTable($startTime,$endTime){ return $this->query() -&g ...
- monobehaviour生命周期完整版
- HandlerMapping和HandlerAdapter配置须知
---------------------siwuxie095 HandlerMapping 和 HandlerAdapter 配置须知 ...
- 问题1:鼠标指向导航栏li,但li中a样式未改变
<!--HTML代码--><div class="nav-mid-left"> <ul> <li><a href=" ...
- 在linux 中启动anaconda
anaconda-navigator $ source ~/anaconda3/bin/activate root ###在bin 目录下打开终端 敲 ./activate root $ a ...
- iOS 编译部署路径
<转> 在 OSX 上初次接触到这些变量, 做一个总结.在编译一个动态库比如 libfoo.dylib 的时候, 你需要指定 INSTALL_PATH. 也就是它的安装路径.一个可执行程 ...