一. 简介
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,能够支持高达 50,000 个并发连接数的响应
- 支持热部署
- 不间断运行及升级
二. 相关概念
1. 正向代理
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
2. 反向代理
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。
同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
- 暴露了代理服务器,隐藏了真实服务器
-
浏览器无感知,无需配置
2. 负载均衡
负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡
3. 动静分离
三. nginx安装
Nginx官网:http://nginx.org/
1. 安装依赖
- yum -y install gcc gcc-c++ autoconf pcre-devel make automake
- yum -y install wget httpd-tools vim
2. 安装nginx
①.创建并进入目录: root/xiongba (名字随便取) 建立一些基本文件夹
②.安装nginx
- cd / (进入根目录)
- yum list | grep nginx (下载nginx)
- yum install nginx (安装,安装时询问就写y)
安装好测试一下:
四. 认识nginx的配置文件
1. 主配置文件
我们可以使用rpm -ql nginx
查看nginx安装目录,目录中我们可以找到etc/nginx/nginx.conf配置文件
我们使用vim打开此文件
2. 子配置文件
在 etc/nginx文件夹下,我们发现一个文件/nginx.conf.default
我们vim进入这个文件
3. 网站根目录
我们使用rpm -ql nginx
查看nginx安装目录时,还看到一个特殊的目录 /usr/share/nginx/html/ 这就是网站根目录
五. nginx的开启和关闭
1.启动
开启 输入命令 nginx
判断是否开启:
- ps aux | grep nginx
- ps -ef | grep nginx
2. linux标准启动方式
systemctl start nginx.service
3. 停止
nginx -s quit
4. linux标准停止
systemctl stop nginx.service
5. 立即停止
nginx -s stop
6. 暴力停止 //杀进程
killall nginx
7. linux 标准重启nginx
systemctl restart nginx.service
8. 重载配置文件
nginx -s reload
9. 查看服务器启用的端口号
netstat -tlnp
六. 错误页面设置
错误页面设置在 子配置文件etc/nginx/nginx.conf.default
之中
七. 访问权限控制
访问权限设置在 子配置文件etc/nginx/nginx.conf.default
之中
1. 允许和拒绝
-
allow 允许访问的ip,可以写IP段,如:182.116.192.1/255
2.不同文件夹不同权限
精确权限控制八. 虚拟主机
虚拟主机就是将一台服务器分割出几个不同的空间,相互独立,仿佛是若干台独立的主机.
1. 基于端口号配置虚拟主机
比如,我们将8001端口设为新的虚拟主机
我们在etc/nginx/config.d文件夹下用vim新建文件 8001.conf,文件中填写配置,其实就是新建一个server对象.比如:
- server{
- listen 8001;
- server_name localhost;
- root /usr/share/nginx/html/html8001;
- index index.html;
- }
在 子配置文件etc/nginx/nginx.conf.default
之中配置
2. 根据IP配置
方法同上,只是server_name配置成ip
server_name 182.116.192.217;
3. 根据域名设置虚拟主机
方法同上,只是server_name配置成域名
server_name 域名;
九. 反向代理
最简单的反向代理
- server{
- listen 80;
- server_name nginx.xiongba.com; (也可以写IP)
- location / {
- proxy_pass http://baidu.com; (也可以写IP)
- }
- }
反向代理还有些常用的指令:
- proxy_set_header :在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息。
- proxy_connect_timeout:配置Nginx与后端代理服务器尝试建立连接的超时时间。
- proxy_read_timeout : 配置Nginx向后端服务器组发出read请求后,等待相应的超时时间。
- proxy_send_timeout:配置Nginx向后端服务器组发出write请求后,等待相应的超时时间。
- proxy_redirect :用于修改后端服务器返回的响应头中的Location和Refresh。
十. 移动端适配
如果我们使用自适应技术写页面,会增加工作量而且降低性能,如果我们通过nginx来适配移动端, 则不会右这些问题
我们在root /usr/share/nginx/html/文件夹下建立不同的文件夹来存放不同设备的页面
如pc、mobile 这些文件夹下拥有不同的index.html
然后在 子配置文件etc/nginx/nginx.conf.default
之中配置
- server{
- listen 8001;
- server_name localhost;
- root /usr/share/nginx/pc;
- if ($http_user_agent ~* 'Android|webOS|iphone|iPod|BlackBerry'){
- root /usr/share/nginx/moblie;
- }
- index index.html;
- }
用户设备有很多种,具体请参考:https://blog.csdn.net/weixin_30564901/article/details/94790201
十一. gzip压缩
Gzip是网页的一种网页压缩技术,经过gzip压缩后,页面大小可以变为原来的30%甚至更小。更小的网页会让用户浏览的体验更好,速度更快。gzip网页压缩的实现需要浏览器和服务器的支持。
gzip的配置项
Nginx提供了专门的gzip模块,并且模块中的指令非常丰富。
- gzip : 该指令用于开启或 关闭gzip模块。
- gzip_buffers : 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。
- gzip_comp_level : gzip压缩比,压缩级别是1-9,1的压缩级别最低,9的压缩级别最高。压缩级别越高压缩率越大,压缩时间越长。
- gzip_disable : 可以通过该指令对一些特定的User-Agent不使用压缩功能。
- gzip_min_length:设置允许压缩的页面最小字节数,页面字节数从相应消息头的Content-length中进行获取。
- gzip_http_version:识别HTTP协议版本,其值可以是1.1.或1.0.
- gzip_proxied : 用于设置启用或禁用从代理服务器上收到相应内容gzip压缩。
- gzip_vary : 用于在响应消息头中添加Vary:Accept-Encoding,使代理服务器根据请求头中的Accept-Encoding识别是否启用gzip压缩。
我们可以通过一个网页来监测网站的gzip情况
http://tool.chinaz.com/Gzips/
2. 如何配置gzip
在主配置项中配置
gzip最简单的配置
- http {
- .....
- gzip on;
- gzip_types text/plain application/javascript text/css;
- .....
- }