一、安装nginx
1、在nginx官方网站下载一个包,下载地址是: http://nginx.org/download/nginx-1.4.2.tar.gz
2、WinSCP(ftp上传工具).exe FTP 上传工具上传达到CentOS中
3、我是先建一个目录,把要用的到的安装包放到一起.
#mkdir /home/
#tar zxf nginx-1.4.1.tar.gz
#cd nginx-1.4.1
4、安装pcre开发包
#yum install -y pcre-devel
5、如果安装出现在下面的错误是缺少编译环境。安装编译源码所需的工具和库
./configure: error: C compiler cc is not found
#yum install gcc gcc-c++ ncurses-devel perl
6、安装cmake,从http://www.cmake.org下载源码并编译安装
#yum -y install make gcc gcc-c++ ncurses-devel
#yum -y install zlib zlib-devel
7、如果需要ssl功能需要openssl库
#yum -y install openssl openssl--devel
8、安装nginx
#cd nginx-1.4.1
#./configure --prefix=/opt/nginx
#make
#make install
2、WinSCP(ftp上传工具).exe FTP 上传工具上传达到CentOS中
3、我是先建一个目录,把要用的到的安装包放到一起.
#mkdir /home/
#tar zxf nginx-1.4.1.tar.gz
#cd nginx-1.4.1
4、安装pcre开发包
#yum install -y pcre-devel
5、如果安装出现在下面的错误是缺少编译环境。安装编译源码所需的工具和库
./configure: error: C compiler cc is not found
#yum install gcc gcc-c++ ncurses-devel perl
6、安装cmake,从http://www.cmake.org下载源码并编译安装
#yum -y install make gcc gcc-c++ ncurses-devel
#yum -y install zlib zlib-devel
7、如果需要ssl功能需要openssl库
#yum -y install openssl openssl--devel
8、安装nginx
#cd nginx-1.4.1
#./configure --prefix=/opt/nginx
#make
#make install
9、检查nginx的配置文件是否争取(假如修改过配置文件)
#nginx -t
10、启动服务
#/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
11、停止服务
#/opt/nginx/sbin/nginx -s stop
12、查看端口占用情况
#netstat -tunlp
13、如果其它机器无法访问,解决方法如下:
#/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
然后保存:
#/etc/rc.d/init.d/iptables save
重启防火墙
#/etc/init.d/iptables restart
10、启动服务
#/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
11、停止服务
#/opt/nginx/sbin/nginx -s stop
12、查看端口占用情况
#netstat -tunlp
13、如果其它机器无法访问,解决方法如下:
#/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
然后保存:
#/etc/rc.d/init.d/iptables save
重启防火墙
#/etc/init.d/iptables restart
二、日志文件的配置与切割
2. 指定日志文件存放路径# log_format formatName formaPattern
# access_log savePath logFormat
3. 例子
log_format weblog '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';
access_log /data/wslogs/1987.name_access.log weblog;
4. 参数含义
- $remote_addr 和 $http_x_forwarded_for:记录客户端的ip地址。
- $remote_user:记录客户端用户名称。
- $time_local:记录访问时间与时区。
- $request:记录请求的URL与HTTP协议。
- $status:记录请求状态;成功是200。
- $body_bytes_sent:记录发送给客户端文件主体内容大小。
- $http_referer:记录从那个页面链接访问过来的。
- $http_user_agent:记录客户端浏览器的相关信息。
5. 切割:
- 就是把log文件用MV命令剪切到另一个文件,
- 然后再kill -user1重启nginx,在重新生成nginx日志。
- 这样写一段脚本,就可以把log文件每天存储一份了
三、信号控制
- TERM、INT 快速关闭
- QUIT 从容关闭
- HUP 平滑关闭,重新加载配置文件
- USER1 重新打开日志文件,在切割日志时用途较大
- USER2 平滑升级可执行程序
- WINCH 从容关闭工作进程
四、HTTP缓存
1. 相关指令集
- proxy_cache zone_name,该指令用于设置哪个缓存区将被使用,zone_name的值为proxy_cache_path指令创建的缓存区名称
- proxy_cache_path 设置缓存文件存放路径,只能在http标签内配置
- proxy_cache_methods [GET POST HEAD] 设置缓存哪些HTTP方法,默认GET/HEAD
- proxy_cache_min_uses number 设置缓存的最小使用次数,默认1
- proxy_cache_key line 设置web缓存的KEY值,如proxy_cache_key "$host:$server_port$uir$is_args$args"
- proxy_cache_valid code time 对不同返回状态吗设置不同的缓存时间,如proxy_cache_valid 200 302 10m
proxy_cache_path /data/cache levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=30glevels指定缓存空间有两层hash目录,第一层目录为一个字母,第二层为2个字母,类似data/cache/c/29/sd8923hsajdlfjaosdcjiajsdoij999;keys_zone参数用来为这个缓存区起名,500m指定缓存空间大小为500M;inactive的1d指如果缓存数据在1天内没有被访问,将被删除;max_size的30g是指硬盘缓存空间为30GB.
五、负载均衡与反向代理
1. Http的Upstream模块
- ip_hash: 让同一IP一直访问同一台机器,保证session正常使用
upstream stream_name {ip_hash;server 192.168.1.12:8080server 192.168.1.15:80}
- server参数
max_fails --在参数fail_timeout指定的时间内请求失败的次数(404除外)
fail_timeout --在max_fails次失败后,暂停的时间
down --标记服务器永久离线,适用于ip_hash
backup --仅在非backup服务器全部宕机或繁忙的时候才启用
六、URL重写Rewrite
1. 标记
- last,表示完成rewrite。使用alias时必须用
- break,本条规则匹配完成后,终止匹配,不再匹配后面的规则。使用proxy_pass时必须用
- redirect,返回302临时重定向,浏览器地址栏会显示跳转后的URL地址
- permanent,返回301永久重定向,浏览器地址栏会显示跳转后的URL地址
2. 重定向URL末尾加?将不会把参数附加到URL后面,否则自动附加参数
- rewrite ^/user?id=1$ http://www.test.com/home? permanent ==> http://www.test.com/home
- rewrite ^/user?id=1$ http://www.test.com/home permanent ==> http://www.test.com/home?id=1
3. 花括号的使用{}
如果在正则中使用了花括号,那么这条正则要用双引号引起来。
rewrite "/image/([0-9]{2})" /image/$1.png;
4. 实例
a. 文件或目录不存在时,重定向到指定页面
if(!-e $request_filename){
rewrite ^/(.*)$ /index.jsp last;}
b. 如果是IE浏览器,重定向到IE目录
if($http_user_agent ~ MSIE){
rewrite ^(.*)$ /IE/$1 break;
}
c. 设置文件缓存时间
location ~ .*\.(gif|png|jpg|bmp|swf)${
expires 30d;
}
location ~ .*\.(js|css)${
expires 1h;
}
d. 示例代码如下:
http{
proxy_temp_path /data0/proxy_temp_path ;
#设置Web缓存区名称为cache_one,内存缓存空间大小为500M,自动清除超过1天没有被
#访问的缓存数据,硬盘缓存空间大小为30G
proxy_cache_path /data0/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g ;
server{
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
#使用Web缓存区cache_one
proxy_cache cache_one ;
#对不同HTTP状态码缓存设置不同的缓存时间
proxy_cache_valid 200 304 12h ;
proxy_cache_valid 301 302 1m ;
proxy_cache_valid any 1m ;
#设置Web缓存的Key值,Nginx根据Key值md5哈希存储缓存,这里根据"域名,URI,
#参数"组合成Key
proxy_cache_key $host$uri$is_args$args;
}
#用于清除缓存,假设一个URL为http://my.domain.com/test.gif,通过访问
#http://my.domain.com/purge/test.gif可以清除该URL的缓存
location ~ /purge(/.*) {
#设置只允许指定的IP或IP段才可以清除URL缓存
allow 127.0.0.1 ;
allow 192.168.0.0/16 ;
deny all ;
proxy_cache_purge cache_one $host$1$is_args$args ;
}
}
}
七、常用配置参数
# 允许客户端请求的最大的单个文件字节数
client_max_body_size 300m;
# 缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户
client_body_buffer_size 128k;
# 跟后端服务器连接的超时时间,发起握手等候响应超时时间
proxy_connect_timeout 600;
# 连接成功后,等候后端服务器响应时间,其实已经进入后端的排队之中等候处理
proxy_read_timeout 600;
# 后端服务器数据回传时间,就是在规定时间之内后端服务器必须传完所有数据
proxy_send_timeout 600;
# 代理请求缓存区,这个缓存区会保存用户的头信息以供Nginx进行规则处理,一般只要能保存下头信息即可
proxy_buffer_size 16k;
# 临时缓存文件大小
proxy_temp_file_write_size 64k;
# 对网页文件、css、JS、XML等启动gzip压缩,减少数据传输量,提高访问速度
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
八、安装第三方模块
1. 安装第三方模块的时候需要覆盖原来nginx文件,代码如下:
./configure --prefix/nginx安装目录 --add-module=/第三方模块的目录
相关推荐
nginx学习笔记(软件+学习笔记) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! nginx学习笔记(软件+学习笔记) 仅供学习交流! 后续会持续分享相关资源,记得关注哦! nginx学习笔记(软件+学习笔记) ...
**Nginx学习笔记概述** Nginx是一款高性能的HTTP和反向代理服务器,也是一款邮件代理服务器。它以其稳定性、高性能以及丰富的模块配置而受到广泛赞誉,常用于网站的负载均衡、静态文件处理和SSL加密等场景。本学习...
这个“Nginx学习笔记.zip”压缩包文件包含了一系列关于Nginx的教程资源,分别命名为“第1节课”到“第5节课”,暗示着一个逐步深入的学习过程。 在第一节课中,我们通常会了解Nginx的基本概念和安装步骤。Nginx的...
Nginx学习笔记1 Nginx是当前使用最广泛的Web服务器之一,它提供了强大的服务器功能和灵活的配置方式。本文档将介绍Nginx的基本概念、安装过程、配置方法和常见问题解决方案。 一、Nginx的基本概念 Nginx是一个...
### Nginx 学习笔记 #### Nginx 集群与分布式服务架构 在当前互联网技术高速发展的背景下,单台服务器已经无法满足日益增长的业务需求。为了解决这一问题,分布式服务架构应运而生。分布式服务架构通过将服务部署...
### Nginx 学习笔记知识点总结 #### 一、Nginx 简介及安装 **Nginx** 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在 BSD-like 协议下发行。其特点是占有内存少,并发能力强,...
"nginx学习笔记及相关资料"这个压缩包中可能包含了关于Nginx的配置示例、教程文档、实战案例等,帮助学习者深入理解Nginx的工作原理,掌握配置和管理技巧,提升解决实际问题的能力。 总之,Nginx是一个强大且灵活的...
"nginx 学习笔记实用知识库分享知识分享" 以下是从给定的文件中生成的相关知识点: Nginx 介绍 Nginx 是一个自由的、开源的、高性能的 HTTP 服务器和反向代理服务器,使用 C 语言编写,提供了高性能、可靠性和可...
《Nginx学习笔记系列》.pdf
这是我自学nginx的学习笔记,上传只是为了更好的督促自己学习,如果你也有同感,加入一起学习吧。
安装 和使用安装常用命令配置文件nginx.conf配置文件三部分组成:全局块,event块,http块全局块:从配置文件开始到events块之间的内容,主要设
Nginx学习笔记
Nginx对请求的处理是通过事件触发的,模块作为事件消费者,只能被事件收集、分发器调用。在Nginx中,接收到一个请求时,不会产生一个单独的进程来处理该请求,而是由事件收集、分发器(进程)调用某个模块,由模块处理...
《Nginx学习笔记(全网最新)》是你掌握这一强大工具的最佳指南。无论你是初学者还是有经验的开发者,这本学习笔记将带你深入探索Nginx的核心功能和高级特性,帮助你快速上手并优化你的Web应用。 在这里,你将学到...
Nginx完整学习笔记 Nginx 是一个功能强大、灵活、可扩展的 Web 服务器,以下是关于 Nginx 的详细知识点: 安装与部署 Nginx 依赖于 pcre 库,因此在安装 Nginx 之前需要先安装 pcre 库。使用 yum 安装 pcre 和 ...
《nginx源码学习笔记》.pdf