NGINX is open source software for web serving, reverse proxying, caching, load balancing, media streaming, and more. It started out as a web server designed for maximum performance and stability. In addition to its HTTP server capabilities, NGINX can also function as a proxy server for email (IMAP, POP3, and SMTP) and a reverse proxy and load balancer for HTTP, TCP, and UDP servers.
Nginx简介
什么是Nginx
Nginx(enginx x)是一个高性能的HTTP和反向代理服务器,具有内存少,高并发能力强特点,他可以处理2-3万并发连接数,官方监测能支持5万并发
- 处理静态文件, 索引文件以及自动索引,打开文件描述符缓冲
- 无缓存的反向代理加速,简单的负载均衡和容错.
为什么要用Nginx
- 跨平台、配置简单、方向代理、高并发连接:处理2-3万并发连接数,官方监测能支持5万并发,内存消耗小:开启10个nginx才占150M内存 ,nginx处理静态文件好,耗费内存少
- 而且Nginx内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上
使用Nginx的话还能:
- 节省宽带:支持GZIP压缩,可以添加浏览器本地缓存
- 稳定性高:宕机的概率非常小
- 接收用户请求是异步的
什么是正向代理和反向代理?
正向代理就是一个人发送一个请求直接就到达了目标的服务器(代理客户端)
例如VPN,在电脑上做了一个代理,这个代理会帮你请求外部的资源
反向代理就是请求统一被Nginx接收,nginx反向代理服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了
例如:每天大量的人访问百度,永远都是www.baidu.com
这个域名,百度肯定不止一台服务器
反向代理就是代理服务器端的,让你无感知的浏览一些服务器资源,可以让服务更好的部署上线
负载均衡的理解
Nginx提供的负载均衡策略有2种:内置策略和扩展策略,内置策略为轮询,加权轮询,IP hash,扩展策略就是天马行空的感觉
请求依次循环访问服务器就是轮询
加权轮询就是加上权重
IP hash对客户端请求的IP进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享问题
动静分离:在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:CSS,HTML,JS,jpg等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变得资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,提高资源响应速度
为什么Nginx性能这么高
因为它的事件处理机制:异步非阻塞事件处理机制:运用了epoll模型,提供了一个队列,排队解决
Nginx怎么处理请求的
nginx接收一个请求后,首先由listen和server_name指令匹配server模块,再匹配server模块里的location,location就是实际地址
1 | server { # 第一个Server区块开始,表示一个独立的虚拟主机站点 |
Nginx常用命令
1 | cd /usr/local/nginx/sbin/ |
默认80端口,如果连接不上,检查服务器防火墙是否开放端口
1 | # 开启 |
在Docker容器中安装Nginx
1 | # 启动新容器绑定80和443端口 容器名ubuntu 镜像名ubuntu1 |
Setup SSL with NGINX
1 | cd /etc/nginx/conf.d |
接下来编辑配置文件的内容
1 | # modify configuration |
1 | server{ |
这里需要将/etc/nginx/conf.d
中的blog.tyokyo320.com.conf
移动到/etc/nginx/sites-available
下
1 | # 当前路径 /etc/nginx/sites-available |
然后备份sites-available
下的default文件
1 | mv default default.bak |
再删除/etc/nginx/sites-enabled
下的default
链接文件
1 | # 当前路径 /etc/nginx/sites-available |
最后在sites-enabled
建立一个blog.tyokyo320.com.conf
的软链接
1 | # 当前路径 /etc/nginx/sites-enabled |
执行结果
1 | root@5602de98f6a6:/etc/nginx/sites-enabled# ls -l |
最后检查一下配置文件是否成功
1 | root@5602de98f6a6:/etc/nginx/sites-enabled# nginx -t |
成功的话可以reload了
1 | nginx -s reload |
退出容器返回NUC,编辑~/docker/frp/frpc.ini
1 | [common] |