是一个轻量级的、高性能的Web服务器和反向代理服务器,同时也是一个比较优秀的负载均衡服务器和缓存服务器,可以运行于多种平台
优点:1、高并发:能支持1万-2万甚至更多的并发连接(静态小文件更强)
2、处理请求对服务器内存消耗较少
3、内置对集群节点的健康性检查功能,但功能相对较弱
4、可以通过cache插件实现缓存软件的功能。
1、什么是高并发?
通俗来讲,高并发是指在同一个时间点,有很多用户同时的访问同一 API 接口或者 Url 地址。它经常会发生在有大活跃用户量,用户高聚集的业务场景中。
2、什么是正向代理和反向代理?
正向代理隐藏真实客户端
正向代理,就是一个位于客户端和原始服务器之前的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并且指定目标(原始服务器),然后代理向原始服务器转交请求
并将获得的内容返回给客户端,客户端才能使用正向代理。
反向代理隐藏真实服务端
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不
需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效
率。
反向代理方式是指以代理服务器来接收internet网上的连接请求,然后将请求转发给内部网络上的服务器,并从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服
务器对外就表现为一个节点服务器。
3、什么是负载均衡?
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
负载均衡服务器(load-balancingserver)是进行负载分配的服务器。通过负载均衡服务器,将服务请求均衡分配到实际执行的服务中,从而保证整个系统的响应速度。
4、什么是缓存服务器?
缓存指的是将需要频繁访问的网络内容存放在离用户较近、访问速度更快的系统中,以提高内容访问速度的一种技术。缓存服务器就是存放频繁访问内容的服务器。
Web缓存服务器的应用模式主要是正向代理和反向代理。正向代理(Proxy)模式是代理网络用户访问internet,客户端将本来要直接发送到internet上源服务器的连接请求发送给代理
服务器处理。正向代理的目的是加速用户在使用浏览器访问Internet时的请求响应时间,并提高广域网线路的利用率。正向代理浏览器无需和该站点建立联系,只访问到Web缓存即可。
通过正向代理,大大提高了后续用户的访问速度,使他们无需再穿越Internet,只要从本地Web缓存就可以获取所需要的信息,避免了带宽问题,同时可以大量减少重复请求在网络上
的传输,从而降低网络流量,节省资费。
反向代理(Reverse Proxy)模式是针对Web服务器加速功能的,在该模式中,缓存服务器放置在web应用服务器的前面,当用户访问web应用服务器的时候,首先经过缓存服务器,并将用
户的请求和应用服务器应答的内容写入缓存服务器中,从而为后续用户的访问提供更快的响应。
安装nginx过程:
第一步:下载、上传到服务器后
第二步:安装依赖包:
yum install pcre-devel automake make zlib zlib-devel gcc-c++ libtool openssl openssl-devel -y
第三步:解压到指定位置
tar -zxvf nginx-1.20.2.tar.gz -C /usr/local/
第四步:新建用户名nginx
useradd nginx -s /sbin/nologin -M
第五步:开始编译:
./configure \
> --user=nginx \ #指定程序运行时的用户
> --group=nginx \ #指定程序运行时的用户组
> --prefix=/usr/local/nginx \ #指定安装目录
> --with-http_ssl_module \ #启用ngx_http_ssl_module支持(使其支持https请求)
> --with-http_sub_module \ #启用ngx_http_sub_module支持(允许用一些其他文本代替nginx响应中的一些文本)
>--with-http_stub_status_module \ #启用ngx_http_stub_status的支持,可以获取自上次启动以来的工作状态
> --with-http_gzip_static_module \ #启用ngx_http_gzip_static_module支持,(在线实时压缩输出数据流)
>--with-pcre #启用pcre库
make && make install
第六步:启动nginx
1、检查语法:/usr/local/nginx/sbin/nginx -t
2、启动nginx: /usr/local/nginx/sbin/nginx
3、查看端口:lsof -i :80
4、浏览器访问测试:192.168.31.136 出现welcome to nginx 安装成功!
/usr/local/nginx/sbin/nginx -t 检查nginx语法
/usr/local/nginx/sbin/nginx 开启nginx
/usr/local/nginx/sbin/nginx -s stop 关闭nginx
/usr/local/nginx/sbin/nginx -s reload 重启nginx
目录结构:
├── client_body_temp
├── conf #nginx所有配置文件目录
│ ├── fastcgi.conf #fastcgi的配置文件
│ ├── fastcgi.conf.default
│ ├── fastcgi_params #fastcgi的参数配置文件
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types
│ ├── mime.types.default
│ ├── nginx.conf #nginx主配置文件
│ ├── nginx.conf.default #nginx默认配置文件
│ ├── scgi_params
│ ├── scgi_params.default
│ ├── uwsgi_params
│ ├── uwsgi_params.default
│ └── win-utf
├── fastcgi_temp
├── html #nginx的首页文件配置目录(编译安装)
│ ├── 50x.html #nginx的错误提示页面
│ └── index.html #nginx的默认首页文件
├── logs
│ ├── access.log #访问日志文件
│ ├── error.log #错误日志文件
│ └── nginx.pid #pid文件
├── proxy_temp
├── sbin #所有命令配置文件
│ └── nginx #启动nginx的命令
├── scgi_temp #nginx的临时目录
└── uwsgi_temp
创建基于域名的主机方法:
第一步:创建发布目录和发布文件。
mkdir -p /www/{web/,blog/}
[root@localhost www]# echo "welcome to wenge's web-server">>web/index.html
[root@localhost www]# echo "welcome to wenge's blog-server">>blog/index.html
第二步:修改主配置文件:
cd /usr/local/nginx/conf/
vim nginx.conf
添加以下内容:(在默认server模块结束后面添加)
server {
listen 80;
server_name blog.wenge.com blog1.wenge.com blog2.wenge.com; #可以是多个域名并列,域名之间用空格 隔开,
location / {
root /www/blog;
index index.html index.htm;
}
}
server {
listen 80;
server_name web.wenge.com;
location / {
root /www/web;
index index.html index.htm;
}
}
第三步:重启nginx
/usr/local/nginx/sbin/nginx -s reload
第四步:添加hosts文件
vim /etc/hosts
添加以下内容:
192.168.31.136 web.wenge.com #IP为服务器IP
192.168.31.136 blog.wenge.com
第五步:在本机设置hosts文件
C:\Windows\System32\drivers\etc
找到hosts文件并添加内容为:
192.168.31.136 web.wenge.com
192.168.31.136 blog.wenge.com
第六步:访问域名
web.wenge.com
blog.wenge.com
正则表达式
是一种文本模式,或者说是一种特殊的字符串模式,作用是处理字符串
字符 含义
\ 转义符,将特殊字符或符号的意义去除
. 代表任意一个字符
* 重复0次或者多次*前的一个字符
[] 字符的集合
.* 匹配所有字符
^ 匹配某字符的开头
$ 匹配某字符的结尾
^$ 匹配空行
[^] 取反
^.* 匹配多个任意字符的开头
| 或
[A-Z] 26个大写字母
[a-z] 26个小写字母
[0-9] 0-9的数字
\d 匹配一个数字字符
\w 匹配包括下划线的任意单词字符
\b 匹配单词的开始或结束
+ 重复一次或多次
? 重复0次或一次
{n} 重复n次
{n,m} 重复n到m次
grep/egrep、sed、awk
grep:是一个强大的文本搜索工具 egrep -v "#|^$" nginx.conf>nginx.conf.new
grep [选项] 条件表达式 文件名
-c 只输出匹配行的列数
-I 不区分大小写(只适用于单字符)
-l 查询多文件时只输出包含匹配字符的文件名
-n 显示匹配行及其行号
-s 不显示不存在或无匹配文本错误信息
-v 显示不包含匹配文本的所有行
sed 是一种流编辑器,用于过滤或转换文本。 sed -n‘9p’
sed[选项] ‘command’文件名
-n:取消默认输出
-i:修改文件内容
command选项
d 删除
p 打印
s 替换指定字符
g 全局替换
优化nginx:
1、去注释符号:
egrep -v “#|^$" nginx.conf> nginx.conf.new
2、开启日志功能:(每个虚拟主机一个日志)
在主配置文件中:去掉日志的注释
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 usr/local/nginx/logs/access_web.log;
检查语法:/usr/local/nginx/sbin/nginx -t
3、设置缓存
图片、视频、音频、JS模块、压缩文件都可设置成缓存,缓存存放在客户访问设备上
在虚拟主机配置文件中添加以下内容: (用于图片缓存)
location ~ .*\.(gf|jpg|jpeg|png|bmp|ico)$ {
root /www/web/;
expires 30d;}
4、优化nginx错误页面。
首先,创建一个错误提示页面在发布目录
cd /www/web/;
echo "this page has been lost.please try again later" >errors.html
其次,在虚拟主机配置文件中添加以下内容。
error_page 403 =errors.html;
最后,重启nginx服务
/usr/local/nginx/sbin/nginx -s reload
5、配置nginx支持php
配置 Nginx 支持php 解析
vim /usr/local/nginx/conf/vhost/web.conf
添加以下内容:
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/web$fastcgi_script_name;
#将/scripts修改为nginx的发布目录
include fastcgi_params;
}
/usr/local/nginx/sbin/nginx -s reload
验证PHP 测试页
vim /www/web/index.php
<?php
phpinfo();
?>
浏览器访问
http://web.wenge.com/index.php