Nginx是一个高并发,高性能的服务器,可以进行反向代理以及网站的负载均衡。这些功能的运用都在配置文件中,也就是Nginx安装目录下的conf/nginx.conf。

nginx.conf

1. 先来看下Nginx默认的配置文件以及说明:

#user  nobody;
#----------------------------------------------
# user用来配置使用的用户和组,默认是没有进行配置的:
# 如下配置表示配置aries这个用户以及aries这个用户组:
# user aries aries
#----------------------------------------------
worker_processes ;
#----------------------------------------------
# worker_processes 用来配置Nginx开启的进程数,
# 一般配置等于cpu的核数。
#----------------------------------------------
#error_log  logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#---------------------------------------------
# error_log 全局错误日志配置,后面跟生成的
# 志文件的位置,默认在Nginx的logs
# 文件夹中,以及日志级别。
# [ debug | info | notice | warn | error | crit ]
#---------------------------------------------
#pid logs/nginx.pid;
#---------------------------------------------
# pid 当Nginx启动时会生成一个nginx.pid的文件,
# 里面存放的是Nginx主线程的id号。
#---------------------------------------------

#工作模式与连接数上限
events {
use epoll;
worker_connections ; #配置Nginx单个进程允许的最大连接数。
} #设定http服务器
http {
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;
#-----------------------------------------------------------------------
# log_format 配置日志格式,后面跟日志格式的名称和配置的格式,参数是Nginx中
# 一些内置的属性。
# access_log 配置日志的存放位置,以及后面跟日志打印格式内容。
# ----------------------------------------------------------------------
sendfile on; # 开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件
#tcp_nopush on; # 防止网络阻塞 #keepalive_timeout 0;
keepalive_timeout ; #gzip on;
# 配置开启gzip压缩

#虚拟主机的配置
server {
listen ;
# 监听端口

server_name localhost;
# 监听主机名称或者ip

#charset koi8-r;
# 默认编码
#access_log logs/host.access.log main;
# 日志
location / {
root html;
index index.html index.htm;
}
#-------------------------------------------------
# 配置的访问位置,默认是html目录下的index.html文件,
    # 如果不存在则找index.htm文件
#------------------------------------------------- #error_page 404 /404.html;
#错误页面配置
# redirect server error pages to the static page /50x.html
#
error_page /50x.html;
location = /50x.html {
root html;
}
}

“http”表示配置的http协议的请求,里面可以配置多台server(虚拟主机),基本的配置格式如下:

 ......

event{

        ......   

    }

http{

      .....

      server {

                ......

       }

      server {

                ......

       }

     } 

2. 下面配置负载均衡:

#user  nobody;
worker_processes ; events {
use epoll;
worker_connections ;
} http {
include mime.types;
default_type application/octet-stream;
keepalive_timeout ; log_format mystyle '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; upstream mycomputers {
#upstream的负载均衡,weight是权重,可以根据机器配置定义权重;weigth参数表示权值,权值越大被分配到的几率越大;down表示当前主机不可用。
server 192.168.137.111: weight=;
server 192.168.137.114: weight= ;
server 192.168.137.113: weight= down;
} server {
listen ;
server_name localhost; location / {
proxy_pass http://mycomputers; # 将请求按照权重分配给上面配置的服务器
proxy_set_header X-UserRealIP-For $remote_addr;
# 因为用户请求服务,先到Nginx所以在服务端如果在服务端直接过去请求IP得到的是Nginx的主机,所以在这里去出用户的真实IP,设置在请求头中,服务端才可以获取用户的真实IP。
} access_log logs/access.log mystyle;
}
}

3. 反向代理配置

server {        
     listen ;
server_name localhost; location / {
proxy_pass http://192.168.137.114:; #代理的内部IP服务器
proxy_redirect off;
       proxy_set_header X-Real-IP $remote_addr;
}
access_log logs/access.log mystyle;
}

4. 动静分离配置

server{
listen ;
server_name localhost; #本地动静分离反向代理配置
#所有jsp的页面均交由tomcat或其他服务器处理
location ~ \.(jsp|jspx|do)?$ {
proxy_pass http://127.0.0.1:;
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直接读取不经过tomcat或resin
location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)${
expires 15d;
} location ~ .*\.(js|css)?${
expires 1h;
}
}

5. Nginx日志的切割

a 写如下脚本存放到 /usr/local/nginx/sbin目录下命名nginx_cut_log.sh, 作用是暂停nginx服务并备份日志文件,然后重启。

#!/bin/bash
BASE_PATH=/usr/local/nginx
LOGS_PATH=${BASE_PATH}/logs
LOGS_PATH_BAK=${LOGS_PATH}/logs_bak
BAK_TIME=`/bin/date -d yesterday +%Y%m%d` $BASE_PATH/sbin/nginx -s stop mv $LOGS_PATH/access.log $LOGS_PATH_BAK/access_$BAK_TIME.log $BASE_PATH/sbin/nginx

给所有用户添加执行权限: chmod a+x nginx_cut_log.sh

b 输入: crontab -e

插入如下代码: 00 00  *  *  *  sh /usr/local/nginx/nginx_cut_log.sh

此操作是让linux系统每天晚上12点整执行nginx_cut_log.sh脚本进行日志切割备份。

测试配置: */1 * * * * sh /usr/local/nginx/sbin/nginx_cut_log.sh       每分钟执行一次

     BAK_TIME=`/bin/date -d yesterday +%Y%m%d%H%M`

效果如下:

以上都只是最基本的配置,还有其他各种细致的配置属性,推荐《nginx 实战》进行系统的了解和学习。

												

Nginx (二) Nginx的反向代理负载均衡以及日志切割的更多相关文章

  1. 【05】Nginx:TCP / 正向 / 反向代理 / 负载均衡

    写在前面的话 在我们日常的工作中,不可能所有的服务都是简单的 HTML 静态网页,nginx 作为轻量级的 WEB 服务器,其实我们将它用于更多的地方还是作为我们网站的入口.不管你是后端接口,还是前端 ...

  2. nginx之rewrite重写,反向代理,负载均衡

    rewrite重写(伪静态): 在地址栏输入xx.com/user-xxx.html, 实际上访问的就是xxx.com/user.php?id=xxx rewrite就这么简单 附上ecshop re ...

  3. 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

    Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...

  4. 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现

    实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...

  5. 项目实战2.1—nginx 反向代理负载均衡、动静分离和缓存的实现

    总项目流程图,详见 http://www.cnblogs.com/along21/p/8000812.html 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备 ...

  6. 项目实战02:nginx 反向代理负载均衡、动静分离和缓存的实现

    目录 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 2.下载编译安装tengine 3.设置代理服务器的配置文件 4.启动tengine服务 5.开启后端的web服务 6.测试 实验二:ng ...

  7. Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向

    原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...

  8. 反向代理负载均衡-----nginx

    一:集群 1.1:集群的概念    集群是一组相互独立的.通过高速网络互联的计算机,他们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用于提高 ...

  9. 反向代理负载均衡之nginx

    一.集群 1.1 什么是集群 集群是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用于提高可用性 ...

随机推荐

  1. 深入理解javascript函数进阶系列第一篇——高阶函数

    前面的话 前面的函数系列中介绍了函数的基础用法.从本文开始,将介绍javascript函数进阶系列,本文将详细介绍高阶函数 定义 高阶函数(higher-order function)指操作函数的函数 ...

  2. UWP 保存Image的图片到本地文件

    上一篇说显示一张图片到Image控件,比较简单. 那个假设我Image控件有图片了,想保存到本地,这个就要花心思了,不过也不复杂的... var rtb = new RenderTargetBitma ...

  3. 制作多级菜单hide()与show() toggle()

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. YiShop_商城系统如何做好口碑营销

    口碑营销是指企业在品牌建立过程中,通过客户间的相互交流将自己的产品信息或者品牌传播开来.口碑是目标,营销是手段,产品是基石.那么,商城系统如何做好口碑营销呢?  下面由YiShop小编带你了解一下:1 ...

  5. C# (using Newtonsoft.Json) Json 转换用法小总结

    //序列化 string Json字符串 = JsonConvert.SerializeObject(目标对象); // 字符串转化为对象 string UserJson = "{\&quo ...

  6. java学习笔记之System类

    System类常用总结 System类概述 java.lang.System类,系统属性信息工具类 常用静态方法: 1. public static long currentTimeMillis() ...

  7. Python笔记·第六章——集合 (set) 的增删改查及 copy()方法

    简介: 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 1.去重,把一个列表变成集合,就自动去重了. ...

  8. SharePoint Online Add-in 开发简介

    作者:陈希章 发表于 2017年12月22日 在 再谈SharePoint大局观 中我提到了SharePoint开发的一些新的变化,这一篇文章我将讲解SharePoint Add-in开发.其实早在2 ...

  9. 网络相关系列之三:通过GET和POST方法发送数据

    写在最前面:年少的安逸舒适在随着年龄的到来和现实生活的压迫总有一天会全数归还(事实上就是<无间道>中那句:"出来混,迟早要还的!") so fighting. 一.GE ...

  10. Python2下载单张图片和爬取网页图片

    一.需求分析 1.知道图片的url地址,将图片下载到本地. 2.知道网页地址,将图片列表中的图片全部下载到本地. 二.准备工作 1.开发系统:win7 64位. 2.开发环境:python2.7. 3 ...