资料参考尚硅谷视频教学
基本概念
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
特点:在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。
反向代理
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。
图片来源于链接中的博客:[原图链接]
正向代理
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
图片来源于链接中的博客:原图链接
负载均衡
负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。如果所示将请求分发到不同的服务器。
动静分离
静态资源和动态资源的分离
安装
官网地址:Nginx官网
1.下载Nginx
2.安装 pcre 依赖
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
3.pcre 目录下执行./configure make,最后执行 make install
4.安装 openssl 、 zlib 、 gcc 依赖
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
5…/configure make && make install
6.服务启动,/usr/local/nginx/sbin/nginx在这里插入代码片
7.在 windows 系统中访问 linux 中 nginx,默认不能访问的,因为防火墙问题
(1)关闭防火墙
(2)开放访问的端口号, 80 端口
查看开放的端口号
firewall-cmd --list-all
设置新的开放的端口号
firewall-cmd --add-service=http –permanent
firewall-cmd --add-port=80/tcp --permanent
重启防火墙生效
firewall-cmd –reload
Nginx常用命令
使用命令必须进入Nginx的sbin目录
1、查看版本号
./nginx -v
2、关闭nginx
./nginx -s stop
3、启动
./nginx
4.重新加载
./nginx -s reload
Nginx配置文件
1、位置/usr/local/nginx/conf/nginx.conf
2、配置文件中的内容
包含三部分内容:
(1)全局块:配置服务器整体运行的配置指令
比如 worker_processes 1;处理并发数的配置,值越大处理的并发越多。
(2) events 块:影响 Nginx 服务器与用户的网络连接
比如 worker_connections 1024; 支持的最大连接数为 1024。
(3) http 块
还包含两部分:
http 全局块
server 块
Nginx配置实例
1、反向代理
访问80端口,转发至8080端口。
2、反向代理2
server {
listen 80;
server_name 192.168.31.130;
location ~ /path1/ {
root html;
proxy_pass http://192.168.31.130:8080;
index index.html index.htm;
}
location ~ /paht2/ {
root html;
proxy_pass http://192.168.31.130:8081;
index index.html index.htm;
}
}
监听80,访问时路径包含path1访问8080,包含path2时访问8081。
1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配
成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、 ~ ✳:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字
符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location
块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。
3、负载均衡
在http中配置
Nginx负载均衡策略:
1 、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2 、weight
weight 代表权,重默认为 1,权重越高被分配的客户端越多
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。 例如:
upstream server_pool {
server 192.168.5.21 weight = 10 ;
server 192.168.5.22 weight = 10 ;
}
3 、ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 例如:
upstream server_pool {
ip_hash ;
server 192.168.5.21:80 ;
server 192.168.5.22:80 ;
}
用户第一次访问后,再次访问会访问相同的服务器。
4 、fair (第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pool {
server 192.168.5.21:80 ;
server 192.168.5.22:80 ;
fair ;
}
4、动静分离
一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;
另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使
浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资
源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,
所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,
不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL,发送
一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码
304,如果有修改,则直接从服务器重新下载,返回状态码 200。
参考资料:博客,知乎,百度百科,尚硅谷视频教学。
配置:autoindexon 会列出文件
https://zhuanlan.zhihu.com/p/32841479
https://blog.csdn.net/lixiangss1993/article/details/87934562