Nginx【学习笔记】

网友投稿 1069 2022-11-21

Nginx【学习笔记】

Nginx【学习笔记】

Nginx

1. nginx可以做什么?

可针对静态资源高速高并发访问及缓存。可使用反向代理加速,并且可进行数据缓存。具有简单负载均衡、节点健康检查和容错功能。支持远程FastCGI服务的缓存加速。支持FastCGI、Uwsgi、SCGI、Memcached Servers的加速和缓存。支持SSL、TLS、SNI。具有模块化的架构:过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI及图像缩放等功能。在SSI过滤器中,一个包含多个SSI的页面,如果经由FastCGI或反向代理处理,可被并行处理。

###1.1 作为WEB服务的话支持

支持基于名字、端口及IP的多虚拟主机站点。支持Keep-alive和pipelined连接。可进行简单、方便、灵活的配置和管理。支持修改Nginx配置,并且在代码上线时,可平滑重启,不中断业务访问。可自定义访问日志格式,临时缓冲写日志操作,快速日志轮询及通过rsyslog处理日志。可利用信号控制Nginx进程。支持3xx-5xx HTTP状态码重定向。支持rewrite模块,支持URI重写及正则表达式匹配。支持基于客户端IP地址和HTTP基本认证的访问控制。支持PUT、DELETE、MKCOL、COPY及MOVE等较特殊的HTTP请求方法。支持FLV流和MP4流技术产品应用。支持HTTP响应速率限制。支持同一IP地址的并发连接或请求数限制。支持邮件服务代理。

###1.2 应用场景

(1)作为Web服务软件

(2)反向代理或负载均衡服务

(3)前端业务数据缓存服务

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$       {           expires     30d;       }       location ~ .*\.(js|css)?$       {           expires     12h;       }

###1.3 优点

支持高并发:能支持几万并发连接(特别是静态小文件业务环境)。资源消耗少:在3万并发连接下,开启10个Nginx线程消耗的内存不到200MB。可以做HTTP反向代理及加速缓存,即负载均衡功能,内置对RS节点服务器健康检查功能,这相当于专业的Haproxy软件或LVS的功能。具备Squid等专业缓存软件等的缓存功能。支持异步网络I/O事件模型epoll(Linux 2.6+)。

2. apache的特点

Apache 2.2版本非常稳定强大,据官方说,Apache 2.4版本性能更强。Prefork模式取消了进程创建开销,性能很高。处理动态业务数据时,因关联到后端的引擎和数据库,瓶颈不在Apache上。高并发时消耗系统资源相对多一些。基于传统的select模型,高并发能力有限。select 模型 也就是 同步 epoll 异步支持扩展库,可通过DSO、apxs方法编译安装额外的插件功能,不需要重新编译Apache。功能多,更稳定,更安全,插件也多。市场份额在逐年递减。

2.1. 网络模式

同步网络模式 select

每个请求的状态始终在维护着 (消耗好多资源)

异步网络模式 epoll 处理服务器端的并发 请求人数越多 服务器肯定吃紧 系统资源也会紧张 I/O效率也会很慢

不定期将你的请求 筛选出来 直接告诉你 不用挨个select

epoll

每个请求 我不再维护你的状态 如果有请求 就找我 找到了 给你服务 找不到拉倒

3. lig为什么nginx处理并发能力更强?

5. 如何选择web服务器?

静态业务:若是高并发场景,尽量采用Nginx或Lig2.4版本也很强大,并发连接数也有所增加。总的来说,在满足需求的前提下,首先选择自己最擅长的软件,若发现了更好的软件,可在掌握新软件之后逐步替换。虽然动态和静态业务都倾向于选择Nginx,但是大前提是自己要熟练掌握Nginx。切记,在工作中不要盲目选择软件,这可能最终会导致自己无法控制局面,从而给企业带来灾难性的损失。

6. Ubuntu下nginx安装和虚拟站点配置方式

如果在Ubuntu16.04下使用apt安装nginx,安装完毕后其工作目录设置如下:

nginx站点配置目录:/etc/nginx/

其中主配置为nginx.confsites-available子目录存放站点配置文件,其中有一个default文件为虚拟站点的配置模板,自己的虚拟站点可以以此为模板进行配置。sites-enabled子目录存放一个对应站点配置文件的软连接。必须在sites-availabel生成站点的配置文件,然后到sites-enabled添加对应的软连接。

默认站点根目录 : /var/www/html/日志文件目录:/var/log/nginx/

error.log记录站点的错误,如果要查看详细的错误信息,可以打开该文件查看

以​​blog.com​​站点为例说明多个虚拟站点配置的方法:

#安装nginx sudo service apache2 stop #停止apache sudo apt-get install nginx-full -y #虚拟站点配置 #1.首先切换目录到sites-available目录 cd /etc/nginx/sites-available #2.复制虚拟站点配置模板,生成自己虚拟站点的配置文件 sudo cp default blog.com.conf   #3 编辑模板 #---------------------以下为配置内容------------------- server {       listen 80; #监听端口   #站点的根目录       root /var/www/html/blog.com;       # Add index.php to the list if you are using PHP       #网站默认首页打开顺序       index index.html index.htm;               #站点名称,可以有多个名称,中间用空格隔开       server_name blog.com blog.com; } #------------------到此结束------------------------------ #这个模板比较简单,如果有复杂的要求,请以此为基础进行改进 #4 保存退出 :wq #5 切换到sites-enabled目录下,创建软连接 cd ../sites-enabled sudo ln -s /etc/nginx/sites-available/blog.com.con   blog.com.conf #6 重启nginx服务 sudo service nginx restart (start/stop) 或者 sudo /etc/init.d/nginx restart #7 切换到站点根目录(根据你自己的设定进行),我假定站点根目录是/var/www/html cd /var/www/html sudo chmod -R 755 blog.com #编辑index.html 疯狂程序员的博客

疯狂的程序员

#保存退出 :wq #8 切换到windows系统下,编辑C:\Windows\System32\drivers\etc\hosts文件,在末尾增加: #ip为你虚拟机的ip地址 192.168.48.3 blog.com   #9 在windows系统下浏览器里输入 : blog.com 看看是否是你的页面

7.centos下nginx安装和配置

添加源:sudo rpm -Uvh yum install -y nginx启动Nginx并设置开机自动运行sudo systemctl start nginx.service sudo systemctl enable nginx.service测试,在浏览器中输入localhost,看缺省网站

##8. 负载均衡

当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。

角色

ip

作用

lvs负载均衡

10.11.59.220

请求分担

web01

10.11.59.155

轮询的web服务器

web02

10.11.59.154

轮询的web服务器

这三台机子要求都安装了nginx环境,web01和web02结构应该是一样的

8.1 负载均衡服务的配置

#连接池   upstream { #www_server_pools自定义的连接池名称     server 10.11.59.154;   #连接的服务器,可以ip或者是域名     server 10.11.59.155;   }   server {       listen       80;       server_name caoliu.com;       location / {           # root   /data/www;           # index index.php index.html index.htm;                     proxy_pass http://www_server_pools;#http://连接池名称           proxy_set_header   Host $host;   #把主机的header头发给轮询的服务器           proxy_set_header   X-Forward-For $Remote_addr; #获取真实的ip地址       }   }

8.2 upstream模块

是nginx支持负载均衡的模块,nginx_常用的轮询算法

rr轮询算法:静态调度算法,按照请求的时间顺序逐一分配到不同的服务器,如果服务器down掉,就不再向其转发请求wrr 权重算法,静态调度算法upstream {     server 10.11.59.154 weight=1;       server 10.11.59.155 weight=3;#这个服务器得到的转发是上面的3倍   }ip_hash 根据客户端ip哈希的结果确定访问那个服务器。upstream {     server 10.11.59.154;     server 10.11.59.155;     ip_hash;   }第三方的算法

fair 按照服务器忙闲,优先将请求给工作量小的服务器url_hash 按照url哈希的结果访问不同服务器

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【R】语言第三课----矩阵
下一篇:CentOS下的Mysql的安装和使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~