一、安装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实现负载均衡的更多相关文章

  1. 【原创】搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群

    为什么移除首页?哪里不符合要求?倒是回我邮件啊! 一.环境搭建 Linux下Vagrant搭建Tomcat7.Java7 二.Nginx的安装配置与测试 *虚拟机下转至root sudo -i 1)下 ...

  2. 搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群

    一.环境搭建 Linux下Vagrant搭建Tomcat7.Java7 二.Nginx的安装配置与测试 *虚拟机下转至root sudo -i 1)下载并解压(目前官网最新版本) 创建安装目录:mkd ...

  3. Redhat/CentOS7-环境虚拟机简单搭建Nginx+Tomcat负载均衡集群

    Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选.由于Tomcat处理静态HTML的能力运不及Apache或者Nginx,所以Tomcat ...

  4. Windows下搭建Nginx实现负载均衡

    环境:本次测试,使用两台电脑,分别是 192.168.0.1,192.168.0.2. 其中Nginx也部署在 192.168.0.1 电脑上,所以 PC1 的IIS端口不能使用80,因为Nginx需 ...

  5. CentOS6.5+nginx+tomcat负载均衡集群

    思路: 1.安装jdk 2.安装tomcat 3.安装nginx依赖库 4.安装nginx 5.nginx+2个tomcat集群 一:网络拓扑

  6. Centos7.2下基于Nginx+Keepalived搭建高可用负载均衡(一.基于Keepalived搭建HA体系)

    说明 本文只为方便日后查阅,不对一些概念再做赘述,网上都有很多明确的解释,也请大家先了解相关概念. 两台搭建HA的服务器是华为云上的ECS(不要忘记开通VPC,保证我们的服务器都处在一个内网环境),由 ...

  7. Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)

    原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...

  8. Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)-转帖篇

    原文:https://my.oschina.net/xshuai/blog/917097 摘要: Nginx+Keepalived搭建高可用负载均衡环境(HA) http://blog.csdn.ne ...

  9. Nginx简单介绍以及linux下使用Nginx进行负载均衡的搭建

    1.Nginx简介 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5 ...

随机推荐

  1. java执行jar包出错:Unable to access jarfile

    java执行jar包出错:Unable to access jarfile 错误的原因有多种: 1.一般都是路径不正确.在Windows中,正确的路径类似于: java -jar "D:\W ...

  2. CSS3 box-shadow实现纸张的曲线投影效果

    一般的投影效果,尤其通过CSS实现的投影效果(无论是CSS3,还是IE滤镜),都是直来直往的.纸张是有卷角的,其投影就是曲面的,如何使用CSS模拟出纸张的卷边曲线投影效果. <div class ...

  3. ubuntu下java的安装即使用

    1.首先在官方网站(点击可以下载)下载最新的JDK,要选用self extracting installer 2.在/usr/下新建java目录,把下载的文件放到这个目录下 sudo mkdir /u ...

  4. CentOS 查看进程状态

    Linux中ps与top命令   ============================================================================ 这两个命令都 ...

  5. PHPlaravel中从数据库中选择数据是增加时间条件及各种条件

    注:附加条件后要加get函数. 1.public function getForDataTable($startTime,$endTime){ return $this->query() -&g ...

  6. monobehaviour生命周期完整版

  7. HandlerMapping和HandlerAdapter配置须知

    ---------------------siwuxie095                                 HandlerMapping 和 HandlerAdapter 配置须知 ...

  8. 问题1:鼠标指向导航栏li,但li中a样式未改变

    <!--HTML代码--><div class="nav-mid-left"> <ul> <li><a href=" ...

  9. 在linux 中启动anaconda

    anaconda-navigator   $ source ~/anaconda3/bin/activate root ###在bin  目录下打开终端 敲 ./activate root   $ a ...

  10. iOS 编译部署路径

    <转> 在 OSX 上初次接触到这些变量,  做一个总结.在编译一个动态库比如 libfoo.dylib 的时候, 你需要指定 INSTALL_PATH. 也就是它的安装路径.一个可执行程 ...