Nginx从入门到精通
目录
- Nginx介绍
- 一、Nginx介绍
- 二、为什么选择Nginx
- 三、Nginx和Apache对比
- Nginx安装部署
- 一、nginx源码下载
- 二、nginx安装
- 三、nginx相关目录
- 四、nginx启动管理
- 五、nginx启动测试
- 默认网站
- 一、默认网站
- 二、访问控制
- 三、登陆验证
- 四、日志管理
- 五、防盗链
- 虚拟主机
- 一、虚拟主机介绍
- 二、基于IP的虚拟主机
- 基于IP的虚拟主机特点
- 三、基于端口的虚拟主机
- 基于端口的虚拟主机特点
- 四、基于域名的虚拟主机
- 基于域名的虚拟主机特点
Nginx介绍
一、Nginx介绍
Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。和apache一样,都是web服务器软件,因为其性能优异,所以被广大运维喜欢。又因为nginx是一个轻量级的web服务器,相比apache来说资源消耗更低。
延伸版本:tengine(淘宝)、openresrt(章亦春)等
- http://nginx.org 官网
- http://www.nginx.cn/doc/index.html 中文文档
二、为什么选择Nginx
Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:
作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,感谢 Nginx 为我们选择了 epoll and kqueue 作为开发模型.
作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。
Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在 不间断服务的情况下进行软件版本的升级。
三、Nginx和Apache对比
- 静态文件处理能力:nginx高于apache
- 资源消耗:nginx优于apache,因为nginx是异步处理模型,只需要几个进程就能够处理大量在线请求,而apache 2.4仍然是进程模型或者线程模型,即仍然采用大量线程来处理大量在线请求。
- Apache支持的模块很多,而且也比较稳定。而nginx由于出现的比较晚,所以在这方面可能比不上Apache。
- nginx本身就是一个反向代理服务器,而且支持7层负载均衡。
- nginx处理动态页面很鸡肋,一般只用与处理静态页面和反向代理。
Nginx安装部署
一、nginx源码下载
官网:http://nginx.org/
源码包:nginx-1.19.3.tar.gz
源码包下载:wget http://nginx.org/download/nginx-1.19.3.tar.gz -P /usr/src
二、nginx安装
2.1、下载nginx源码包
[root@zutuanxue ~]# wget http://nginx.org/download/nginx-1.19.3.tar.gz -P /usr/src
[root@zutuanxue src]# cd /usr/src2.2、安装nginx依赖包
[root@zutuanxue ~]# yum -y install gcc pcre-devel zlib-devel- gcc: 源码编译工具 - pcre-devel: nginx url_rewrite 功能提供包 - zlib-devel: nginx 压缩功能提供包 2.3、解压nginx源码,并进入源码包
[root@zutuanxue src]# tar xf nginx-1.19.3.tar.gz
[root@zutuanxue src]# cd nginx-1.19.32.4、配置nginx源码[root@zutuanxue nginx-1.19.3]# ./configure --prefix=/usr/local/nginx配置目的:1)检查环境 是否 满足安装条件 依赖解决2)指定安装方式 配置文件 命令文件 各种文件放哪里 开启模块功能【内置模块 三方模块】3)指定软件安装在那里2.5、编译nginx源码
[root@zutuanxue nginx-1.19.3]# make -j42.6、安装nginx
[root@zutuanxue nginx-1.19.3]# make install
三、nginx相关目录
nginx path prefix: “/usr/local/nginx”nginx binary file: “/usr/local/nginx/sbin/nginx”nginx modules path: “/usr/local/nginx/modules”nginx configuration prefix: “/usr/local/nginx/conf”nginx configuration file: “/usr/local/nginx/conf/nginx.conf”nginx pid file: “/usr/local/nginx/logs/nginx.pid”nginx error log file: “/usr/local/nginx/logs/error.log”nginx http access log file: “/usr/local/nginx/logs/access.log”
四、nginx启动管理
配置文件测试:/usr/local/nginx/sbin/nginx -t
Nginx启动:/usr/local/nginx/sbin/nginx
Nginx关闭:killall –s QUIT nginx
五、nginx启动测试
nginx安装完毕,接下来就可以启动nginx了,nginx启动后如何测试nginx的启动状态呢?可以通过以下三种方式去测试,这个可以根据自己的习惯选择一种测试就行了。
- 使用netsata命令查看启动端口
[root@zutuanxue ~]# netstat –ntpl - 使用losf命令查看启动端口
[root@zutuanxue ~]# lsof -i :80 - 使用文本浏览器访问nginx默认网站
[root@zutuanxue ~]# elinks http://IP
测试内容:
默认网站
一、默认网站
server {listen 80;server_name localhost;location / {root html;index index.html index.htm;#支持目录浏览autoindex on;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
二、访问控制
location /a {autoindex on;allow 192.168.12.0/24;deny all;#基于客户端IP做过滤,符合条件的允许访问,不符合的返回404;if ( $remote_addr !~ "192.168.12" ) {#return 404;return http://book.ayitula.com;}}
三、登陆验证
location /c {auth_basic "登陆验证";auth_basic_user_file /etc/nginx/htpasswd;}
四、日志管理
Nginx访问日志主要有两个参数控制
log_format #用来定义记录日志的格式(可以定义多种日志格式,取不同名字即可)
access_log #用来指定日至文件的路径及使用的何种日志格式记录日志
access_log logs/access.log main;
log_format格式变量:$remote_addr #记录访问网站的客户端地址$remote_user #远程客户端用户名$time_local #记录访问时间与时区$request #用户的http请求起始行信息$status #http状态码,记录请求返回的状态码,例如:200、301、404等$body_bytes_sent #服务器发送给客户端的响应body字节数$http_referer #记录此次请求是从哪个连接访问过来的,可以根据该参数进行防盗链设置。$http_user_agent #记录客户端访问信息,例如:浏览器、手机客户端等$http_x_forwarded_for #当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置
自定义一个json格式的访问日志
log_format main_json '{"@timestamp":"$time_local",'
'"client_ip": "$remote_addr",'
'"request": "$request",'
'"status": "$status",'
'"bytes": "$body_bytes_sent",'
'"x_forwarded": "$http_x_forwarded_for",'
'"referer": "$http_referer"'
'}';
access_log logs/access_json.log main_json;
日志截断
mv access.log access.log.0killall -USR1 \`cat master.nginx.pid\`sleep 1gzip access.log.0
五、防盗链
location /images/ {
alias /data/images/;
valid_referers none blocked *.ayitula.com;if ($invalid_referer) {rewrite ^/ http://www.ayitula.com/daolian.gif;#return 403;}
}
虚拟主机
一、虚拟主机介绍
虚拟主机 就是把一台物理服务器划分成多个“虚拟”的服务器,每一个虚拟主机都可以有独立的域名和独立的目录,可以独立发布一个网站。
实验案例: 同时发布两个网站:
- DocumentRoot /usr/local/nginx/html/web1
- DocumentRoot /usr/local/nginx/html/web2
二、基于IP的虚拟主机
应用场景:IP充足的环境,每个网站需要一个IP地址
server {listen 192.168.11.251:80;location / {root html/web1;index index.html index.htm index.php;}
}
server {listen 192.168.11.252:80;
location / {root html/web2;index index.html index.htm;}
}
基于IP的虚拟主机特点
- 不同IP对应不同网站
- 访问方便,用户直接使用默认端口即可访问
- 服务器需要有多个IP地址(一个公网IP大概一年的费用是600左右)
- 维护方便,基于独立IP的站点,便于监控、维护。
三、基于端口的虚拟主机
应用场景:IP不足的环境
- 优点: 多个网站发布使用该配置方法只需要一个IP,节省IP地址
- 缺点 端口你是无法告诉公网用户,无法适用于公网客户,适合内部用户
基于端口
server {listen 80;#server_name www.zutuanxue.com;location / {root html/web1;index index.html index.htm index.php;}
}
server {listen 8080;#server_name www.zutuanxue.com;location / {root html/web2;index index.html index.htm;}
}
基于端口的虚拟主机特点
- 不同端口对应不同网站
- 访问需要加端口
- 节省IP地址
- 适合私网运行
四、基于域名的虚拟主机
应用场景:一个网站需要有一个域名,目前公网发布网站的首选
基于域名
server {listen 80;server_name web1.zutuanxue.com;location / {root html/web1;index index.html index.htm index.php;}
}server {listen 80;server_name web2.zutuanxue.com;location / {root html/web2;index index.html index.htm;}
}
基于域名的虚拟主机特点
- 不同域名对应不同网站
- 需要多个域名 可以是二级或三级域名
- 每个站点使用默认端口,方便用户访问
- 只需要一个IP地址,节约成本
- 适合公网环境
Nginx从入门到精通相关推荐
- 千言万句,Nginx从入门到精通,看这一篇足矣
本文是一个 Nginx 极简教程,目的在于帮助新手快速入门 Nginx. Nginx 简介 什么是 Nginx? Nginx(engine x)是一款轻量级的 Web 服务器 .反向代理服务器及电子邮 ...
- NGINX由入门到精通:Nginx介绍
原文:http://www.aosabook.org/en/nginx.html nginx(发音"engine x")是俄罗斯软件工程师Igor Sysoev开发的免费开源web ...
- 2018最新Nginx从入门到精通5阶段视频教程附代码(Http代理+负载均衡+静动分离)
课程介绍 系统讲解Nginx ,课程通用性非常高,几乎所有与后台相关的技术人员都会用到,了解Nginx 的人很多,但真正掌握Nginx 的却很少,系统掌握Nginx配置与快速搭建高可用架构的技术方法. ...
- Docker零基础从入门到精通(全)
目录 前言 1. Docker介绍 1.1 Docker的安装 1.2 Docker的卸载 2. 配置阿里云镜像加速 3. Docker原理 3. docker常用命令 3.1 镜像命令 3.2 容器 ...
- java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
目录 前言 1. 学习路线 2. 学习方法 前言 这篇文章主要总结我之前所学过的框架以及学习路线 从实打实的零基础到框架再到项目 之后实习工作 也在这篇博客中记录我的学习笔记 以及在笔记中遇到的配置安 ...
- Nginx开发从入门到精通
Nginx开发从入门到精通 缘起 nginx由于出色的性能,在世界范围内受到了越来越多人的关注,在淘宝内部它更是被广泛的使用,众多的开发以及运维同学都迫切的想要了解nginx模块的开发以及它的内部原理 ...
- nginx开发从入门到精通 http://tengine.taobao.org/book/
nginx开发从入门到精通 http://tengine.taobao.org/book/
- 免费下载《Nginx教程从入门到精通》.pdf
关注"Java后端技术全栈" 回复"面试"获取全套面试资料 什么是Nginx? Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/P ...
- java从入门到精通_想要开始学java?你要的java从入门到精通布列如下!
java从入门到精通,让我来告诉你! 毫无疑问,java是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握java看似是一件十分困难的事.其实,只要掌握了科学的学习方法 ...
- meteor从入门到精通_我已经大规模运行Meteor一年了。 这就是我所学到的。
meteor从入门到精通 by Elie Steinbock 埃莉·斯坦博克(Elie Steinbock) 我已经大规模运行Meteor一年了. 这就是我所学到的. (I've been runni ...
最新文章
- Web应用里的HTTP参数污染(HPP漏洞)
- 家用电脑配置_家用电脑无需太高配置,不要听电脑店瞎忽悠,2500元机子够用了!...
- How to resolve error message Malformed URI literal syntax
- 【专升本计算机】甘肃省专升本计算机C语言经典程序案例代码合集(持续更新)
- ssl2346-联络员【图论,最小生成树】
- 【原理+实战+视频+源码】docker权限参数
- 8位可控加减法器_行测高分技巧-资料分析之有效数字加减法取舍
- 腾讯大数据之TDW计算引擎解析——Shuffle
- 【亚伦博客】我们勇敢的审查者
- [NOI2014]动物园
- gvim 命令行粘贴_vim-如何在光标所在的行中粘贴?
- 解决keil注册机和编译错误的问题2020-12-28
- 老板口中的一区二区是什么意思?
- Android图片剪裁库:uCrop
- ABB控制器800模块AC800F/PM802F
- 服务器网卡支持25G,25G服务器网卡光模块解决方案
- 用stream流将list集合根据某个字段分组成Map<String,List<T>>类型的集合
- 微服务生态组件之Spring Cloud LoadBalancer详解和源码分析
- Keepalived + Nginx - linux 灾备方案(实现主备、热备)
- http状态码有哪些?代表什么意思?(查询手册而已)