nginx的记录配置心得

    今天本来要去见自己喜欢的一个人的,唉,感觉自己的爱情龙卷风来了,来的很猛烈,我今天还把自己的胡子刮的很干净,悲催的是那位女士像木头一样,不知道她怎么想的,我发微信她也偶尔回复我,我真的很喜欢她,虽然刚认识没多久,这种感觉从来没有过,我每天都给她发很多消息,我现在都怕她烦了,会不会把我加黑啊,心里很矛盾,真的,找到一个自己喜欢的人和喜欢自己的人真的好难啊,好了悲催的心情就到这里吧。

    我下面给大家带来的是NGINX的一些记录,因为可能要换工作了,面试的时候会问到,而且有个人老问我,他要给公司配置NGINX,我就记录下吧

    一、nginx的安装

安装前的一些准备工作

[root@taotao2016 ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
[root@taotao2016 ~]#

yum install pcre pcre-devel  -y  #先安装pcre 这是nginx rewrite模块要用到的必须要安装

yum install openssl-devel openssl #这也要安装  我用的7的系统直接yum安装的

useradd nginx -s /sbin/nologin -M  #建立ningx用户

开始安装

nginx-1.11.3.tar.gz   http://nginx.org/ 下载地址

 ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx-1.11.3  --with-http_stub_status_module --without-http_ssi_module  #安装的目录加上版本号

make && make install

这样就安装完成了

[root@taotao2016 nginx-1.11.3]# cd /usr/local/
[root@taotao2016 local]# ls
bin  etc  games  include  lib  lib64  libexec  nginx-1.11.3  python3  sbin  share  src
[root@taotao2016 local]# cd nginx-1.11.3/
[root@taotao2016 nginx-1.11.3]# ls
conf  html  logs  sbin
[root@taotao2016 nginx-1.11.3]# cd sbin/
[root@taotao2016 sbin]# ls
nginx
[root@taotao2016 sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx-1.11.3/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx-1.11.3/conf/nginx.conf test is successful
直接执行bin下面的nginx就启动了服务
[root@taotao2016 sbin]# netstat -anlpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4801/nginx: master

访问下试试:

wKiom1fC3hSBZjyGAAB0Jn3gDNs244.jpg

经验:

ln -s nginx-1.11.3 nginx  #建立个软连接 以后升级后直接nginx指向新版本就行了

#安装的时候要其他模块请直接看官方的说明文档

二:配置nginx的rewrite

这个模块就是安装的时候用的pcre软件提供的

rewrite指定语法; rewrite regex replacement[flag]   应用位置 server、location 、if

该指令根据表达式来重定向URI,或者修改字符串。指令根据配置文件中的顺序来执行。注意重写表达式只对相对路径有效。如果你想配对主机名,你应该使用if语句,示例如下:

先说后面的flag 的几个说明吧:

1.last     相当于apache里面的[L]标记,表示rewrite。
2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。
3.redirect  返回302临时重定向,浏览器地址会显示跳转后的URL地址。
4.permanent  返回301永久重定向, 浏览器地址会显示跳转后的URL地址

例子: rewrite ^/(.*) http://www.daxia.help/$1 permanent;      #rewrite是关键字  regex部分^/(.*) 这是一个正则表达式,表示匹配所以,匹配成功后跳转到后面的 replacement部分也就是www.daxia.help这个域名  $1是引用前面()里面的内容简化写入的,permanent是301永久跳转,这是告诉搜索引擎的。

http://www.linuxidc.com/Linux/2014-01/95493.htm  这里有详细配置,我今天有点困了,改天再补详细点

三:日志配置

    #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 是定义日志格式的关键字  main是标签 remote_addr 是记录访问客户端的地址  remote_user 远程访问客户端的名称  time_local是日期  request 是http起始行的信息

status http的状态码 200 404 等  body-bytes_set 是服务器发送给客户端的响应body字节数 http_referer 记录这次访问是从那个链接访问过来的用于防盗链设置

http_user_agent 是记录浏览器的信息 比如是手机还是谷歌浏览器 360浏览器等  http_x_forwarded_for 当有代理时候设置这个记录客户端的真实地址用的

access_log 配置   语法: access_log path[format[buffer=size[flush=time]] [if=condition];     access_log path format gzip [=level] [buffer=size][flush=time][if=condition]  ;   access_log syslog:server=address[ paarmeter=value][format[if=condition]];

buffer=size 是存放访问日志的缓冲区大小,flush=time是日志多久刷新到硬盘的时间 ,gzip[level] 表示压缩级别 [if=condition] 表示其他条件 一般这些都不需要配置

access_log off 是关闭记录日志  可以应用到 http server location \if in locaton\limit_except中

例子: access_log logs/access_www.log main gzip buffer=32k flush=5s;

http://www.linuxidc.com/Linux/2014-12/110989.htm  日志切割

访问日的切割:

#!bin/sh
Dateformat=`date +%Y%m%d`
Basedir="/usr/local/nginx"
Nginxlogdir="$Basedir/logs"
Logname="access_www"
[ -d $Nginxlogdir ] && cd $Nginxlogdir || exit 1
[ -f ${Logname}.log ] || exit 1
/bin/mv ${Logname}.log ${Dateformat}_${Logname}.log
$Basedir/sbin/nginx -s reload

##就是把日志文件移动到另外个文件在重启加载下nginx的配置 重新生成日志 最后把脚本放到crontab里面定时执行就行了

四、location的配置

nginx location语法

基本语法:location [=|~|~*|^~] /uri/ { … }

= 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。

~ 为区分大小写匹配(可用正则表达式)

~* 为不区分大小写匹配(可用正则表达式)

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配

^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式。

http://www.cnblogs.com/lidabo/p/4169396.html

http://www.linuxidc.com/Linux/2015-06/119398.htm

五:nginx的一些简单优化

去掉版本信息: 

在http标签里面加入server_tokens off; 开启或者关闭 on默认的

要是修改源码的配置就是 nginx-1.11.3/src/core/nginx.h里面 

/*
 * Copyright (C) Igor Sysoev
 * Copyright (C) Nginx, Inc.
 */


#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_


#define nginx_version      1011003
#define NGINX_VERSION      "1.11.3"     把这里修改了就行修改成自己喜欢的版本 2.22.6比如
#define NGINX_VER          "nginx/" NGINX_VERSION

#ifdef NGX_BUILD
#define NGINX_VER_BUILD    NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD    NGINX_VER
#endif

#define NGINX_VAR          "NGINX"   ###这里也能修改成其他软件比如叫小芳软件 xiaofang
#define NGX_OLDPID_EXT     ".oldbin"


#endif /* _NGINX_H_INCLUDED_ */

还有个文件是 nginx-1.11.3/src/http/ngx_http_header_filter_module.c

static char ngx_http_server_string[] = "Server: nginx" CRLF;  ##把这行的nginx换成自己的名字

最后一个文件是 ngx_http_special_response.c 也在上面的目录:

"<hr><center>" NGINX_VER "</center>" CRLF  #这个换成 "<hr><center>" NGINX_VER (www.daxia.help)"</center>" CRLF

"<hr><center>nginx</center>" CRLF   #换成 "<hr><center>xiaofang</center>" CRLF

之后重新编译安装就okl 


修改默认的nobody 用户用你知道的nginx用 


优化nginx的worker进程数:

worker_processes 1; 指定nginx 开启的进程数一般是cpu核数的* (1-2)


优化绑定不同的nginx进程到不同的cpu上:

例如:

worker_processes     4;

worker_cpu_affinity 0001 0010 0100 1000;

可以查看官方的说明


nginx 的处理模型优化:  

一般都是linux 选择epoll就行了,BSD系统用kqueue 可以看官网的说明

调整nginx单个进程如许打开的客户端最大连接数

worker_connections 20480 

# 默认1024 公式 Max_client=worker_processes*worker_connections 进程的最大连接数受linux系统的最大打开文件数限制 ulimit -HSn 65535 


配置nginx worker 进程最大打开文件数

worker_rlimit_nofile number  ;

worker_rlimit_nofile 65535; ulimit -HSn 设置一样就行


优化配置服务器域名的散列表大小:

server_names_hash_bucket_size 64;

server_names_hash_max_size  128;


开启高效的文件传输:

sendfile on


优化连接参数。调整超时时间

keepalive_timeout 75s ;默认 

上传文件大小的设置:

client_max_body_size 8m;


先到这把 困了!








本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
需要使用到的服务:PXE + DHCP+TFTP+ Kickstart+ FTP 运行原理如下图: 原理和概念: 1、前言 首先,简单谈谈为什么要采用无人值守网络安装linux操作系统。一方面是运维管理的需要,因各种需要,安装操作系统在实验室内时有发生,有时候更出现批量安装某一型号操作系统的情形,这时候如果用光盘挨个安装将变得异常繁琐,并且需要人工值守。此外,因操作系统种类较多(主要是针对linux),内部人员使用频繁,也会带来管理上的问题。另一方面是当前MPX项目开发的需要,为打造一个精简、适用、高效、

Linux基础之sed流编辑器详解 - 2016-08-29 17:08:59

之前介绍了三大文本编辑器的grep,这里介绍比grep功能更强的sed流编辑器 sed是什么? sed是Stream EDitor的缩写,man中对sed的简介为 sed - stream editor for filtering and transforming text 它的主要功能是对文本的过滤与替换。 sed的工作原理 sed的工作过程 :sed是一个流编辑器,所谓流编辑器是指sed每次只从文件或stdin中读入一行,将读入的行保存至模式空间然后根据指定的要求对其进行处理,并将处理后的结果输出至屏

OpenVPN应用案例 - 2016-08-29 17:08:58

OpenVPN服务器的搭建: http://qicheng0211.blog.51cto.com/3958621/1575273 CentOS下OpenVPN客户端配置: http://qicheng0211.blog.51cto.com/3958621/1840055 应用一 、点对点安全通道 工作中可能会遇到这样的场景:由于业务需要,异地两台服务器需要安全的相互访问,除了拉专线,比较经济的方法就是通过公网建立加密隧道,openvpn是一个很好的选择。 服务端:内网IP192.168.20.220,vp
前段时间做了个项目,是关于父子域合并的,其实无非就是使用ADMT把域用户,计算机等从子域迁移到父域上,看似迁移用户很简单。But……生产环境啊,Exchange,TFS,Sharepoint,还有其余乱七八糟的东西,都使用了域账号,牵一发动全身的节奏,迁移账号出点儿问题相关用户就可以坐在那打酱油了,迁移前在他们生产环境中新建测试账号迁移,但是这种测试账号相对理想的环境,测试过程中很多问题不容易发现,很多问题是迁移了客户生产用户账号时出现了问题,但是于对于TFS一窍不通,sharepoint大多不懂的我来说
上一篇博客讲解了nginx相关的数据结构。 这一篇主要交接如何将自己的模块编译进nginx; 一种常用的简单方法: 1)首先把源代码文件全部放大一个目录下,然后在改目录中编写一个config用于通知Nginx如何编译本模块,这个文件名必须为config。 在configure脚本执行时加入参数--add-module=PATH(上面源码,config的保存目录) 执行正常安装流程是完成Nginx的编译工作。 ps:还有一种复杂方式,就是修改configure脚本执行后生成的obj/Makefile和obj

OpenLDAP 客户端部署 - 2016-08-29 17:08:32

有关服务端的安装请点击 一、账号登录系统流程讲解 当在客户端输入账号登录系统时,系统根据/etc/nsswitch.conf配置文件获取账号查找顺序,然后再根据PAM配置文件调用相关模块,对账号(/etc/passwd)及密码(/etc/shadow)进行查找并进行匹配。当本地匹配不成功时,会通过后端认证服务器(OpenLDAP服务器)进行验证。 二、配置文件功能介绍 下面介绍几个配置文件再后面我们会进行修改,我这里简单介绍一下。 /etc/nsswitch.conf 该文件主要用于名称转换服务,用于系统
1. root下进入其他用户主目录 cd ~USERNAME 2. touch的另外的一种作用 常用的是touch创建一个不存在的文件 而touch一个存在的文件时候,touch会修改文件的三个时间(使用stat可以查看),其中access表示最后一个访问时间,modify表示最后一次修改文件的时间,change表示最后修改文件属性的时间 3. file查看文件类型 镜像文件(iso)的文件类型为iso9660 4./etc/passwd中各字段对应解释 1 用户名:2密码:3uid:4gid:5备注:6
谁说Lync Server 前端不可以使用Windows网络负载平衡实现高可用的?(仅限测试环境) 本章内容有: 1.两台Lync Server安装Windows功能---网络负载平衡 2.配置网络负载平衡 3.DNS记录修改 4.测试故障切换(模拟两种故障,网络故障和服务故障) 5.开始的时候别忘了上一章中的提示,将两台前端Server都进行重启 = = 安装网络负载平衡 两台服务器都需要进行安装 = = 配置网络负载平衡 1)新建群集 2)将LyncFE01先添加到群集中 3)群集IP自己随便填写 4

深入剖析linux磁盘管理 - 2016-08-29 17:08:26

一、linux中常见的磁盘: 无论什么操作系统,归根还是要落实与磁盘上的,对于磁盘的管理也是linux管理必备的一项技能。在linux中“一切皆文件”的思想贯彻整个linux的学习中,包括像是磁盘等的硬件也是在linux的/dev/目录下类似于文件形式的存放,常见的SATA口USB优盘或是SCSI口的硬盘在linux中是以/dev/sd[a-p]开头的文件,早期的IDE硬盘现在已经很少见了,这种硬盘在linux中是以/dev/hd[a-d],CDROM是以/dev/cdrom开头的文件,磁带机/dev/s

linux实战题 - 2016-08-29 17:08:10

在配置Apache时,执行了./configure --prefix=/application/apache2.2.17来编译Apache,在make install完成后,需要用户的访问路径更加简单 ,需要给/application/apache2.2.17目录做一个软链接/application/apache,是得内部人员可以通过/application/apache就可以访问到Apache的安装目录/application/apache2.2.17下的内容 ,请给出实现命令。(安装时有版本号,后面使