【学相伴】Nginx最新教程通俗易懂

公司产品出现瓶颈?

我们公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。

但是慢慢的,使用我们平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了。

于是我们横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。

我们希望这个代理服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望他可以按照服务器的性能提供不同的权重选择。保证最佳体验!所以我们使用了Nginx。

什么是Nginx?

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。2011年6月1日,nginx 1.0.4发布。

其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。

Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。

Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。

Nginx作用?

Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。

正向代理

反向代理

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的。

轮询

加权轮询

iphash对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

动静分离,在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。

目前,通过使用Nginx大大提高了我们网站的响应速度,优化了用户体验,让网站的健壮性更上一层楼!

Nginx的安装

windows下安装

1、下载nginx

http://nginx.org/en/download.html 下载稳定版本。
以nginx/Windows-1.16.1为例,直接下载 nginx-1.16.1.zip。
下载后解压,解压后如下:

2、启动nginx

有很多种方法启动nginx

(1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过

(2)打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe ,回车即可

3、检查nginx是否启动成功

直接在浏览器地址栏输入网址 http://localhost:80 回车,出现以下页面说明启动成功!

4、配置监听

nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果80端口被占用可以修改为未被占用的端口即可。

当我们修改了nginx的配置文件nginx.conf 时,不需要关闭nginx后重新启动nginx,只需要执行命令 nginx -s reload 即可让改动生效

5、关闭nginx

如果使用cmd命令窗口启动nginx, 关闭cmd窗口是不能结束nginx进程的,可使用两种方法关闭nginx

(1)输入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)

(2)使用taskkill taskkill /f /t /im nginx.exe

  1. taskkill是用来终止进程的,

  2. /f是强制终止 .

  3. /t终止指定的进程和任何由此启动的子进程。

  4. /im示指定的进程名称 .

linux下安装

1、安装gcc

安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:

yum install gcc-c++

2、PCRE pcre-devel 安装

PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:

  1. yum install -y pcre pcre-devel

3、zlib 安装

zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

yum install -y zlib zlib-devel

4、OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。

  1. yum install -y openssl openssl-devel

5、下载安装包

手动下载.tar.gz安装包,地址:https://nginx.org/en/download.html

下载完毕上传到服务器上 /root

6、解压

tar -zxvf nginx-1.18.0.tar.gzcd nginx-1.18.0

7、配置

使用默认配置,在nginx根目录下执行

  1. ./configure

  2. make

  3. make install

查找安装路径: whereis nginx

Nginx常用命令

cd /usr/local/nginx/sbin/./nginx  启动./nginx -s stop  停止./nginx -s quit  安全退出./nginx -s reload  重新加载配置文件ps aux|grep nginx  查看nginx进程

启动成功访问 服务器ip:80

注意:如何连接不上,检查阿里云安全组是否开放端口,或者服务器防火墙是否开放端口!
相关命令:

  1. # 开启

  2. service firewalld start

  3. # 重启

  4. service firewalld restart

  5. # 关闭

  6. service firewalld stop

  7. # 查看防火墙规则

  8. firewall-cmd --list-all

  9. # 查询端口是否开放

  10. firewall-cmd --query-port=8080/tcp

  11. # 开放80端口

  12. firewall-cmd --permanent --add-port=80/tcp

  13. # 移除端口

  14. firewall-cmd --permanent --remove-port=8080/tcp

  15. #重启防火墙(修改配置后要重启防火墙)

  16. firewall-cmd --reload

  17. # 参数解释

  18. 1、firwall-cmd:是Linux提供的操作firewall的一个工具;

  19. 2、--permanent:表示设置为持久;

  20. 3、--add-port:标识添加的端口;

(0)

相关推荐

  • docker上如何快速安装部署ngnix?非常详细~

    确保操作系统上已经安装docker.如果没有安装可参考我已发布的[centos7上如何安装docker]安装操作步骤.这里还是以centos来操作. 一.确保docker已经启动,执行拉取最新的ngn ...

  • 如何让网站不同页面调用不同PHP版本

    写在写在前面的前面 是的,知道我的朋友应该都清楚,前述我提到了,我会停笔到下一个学术论文投出.不过这几天我一直在考虑一个问题,手上确实有一些想写的,那么是不是确实值得写写?今天发现身边的人几乎都放假了 ...

  • Linux上安装nginx

    环境:centos7   nginx1.16.1(源码安装) 一.下载nginx源码包 地址:http://nginx.org/en/download.html Mainline version(主线 ...

  • Linux学习9-CentOS搭建nginx环境

    前言 之前我们搭建网站的时候,把war包放到tomcat下就能运行起来了,为什么部署上线的时候,又用到了nginx呢? nginx可以做多台服务器的负载均衡,当用户非常少的时候,可以用一台服务直接部署 ...

  • Nginx环境搭建与使用

    一.背景 之前测试的项目前后端的"路由"(负责把前端发过来的请求转发到相应的后端服务上)要用Nignx来取代原来的tomcat的http server功能,做这个替换的原因是Nig ...

  • centos端口映射

    场景:A.B两台在同一局域网的机器 A可以连通外网 B不可以连通外网 只需要在A机器中操作 vi /etc/sysctl.conf在文件中添加net.ipv4.ip_forward = 1如果存在ne ...

  • iPhone 查看电池寿命、充电循环最新教程

    果粉俱乐部 让科技更好的服务生活 点击上方「蓝字」加入我们 苹果 2017 年爆发的「降频门」事件让这家科技巨头遭遇了史上最大的品牌危机. 随后苹果向全球用户致歉,同时在 iOS 系统上加入了电池健康 ...

  • 漂亮的钩针雏菊花,一根针几团零线就可以完成,快来学!(附教程)

    春天,让人对慢下来心生神往,只有慢下来才可以将不时跃入眼帘的春色尽情纳入眼底.缤纷的花朵,动人的新绿,这些颜色轻松俘获所有人的心. 那么这一簇生动可爱的小雏菊有没有同样让你心动呢?只要会基本针法就可以 ...

  • 零起步教你怎样学画画 素描基础教程

    学画画关键有3点,就是动手.动手.动手. 素描的概念(兼思想教育.热身) 素描从广义上讲,顾名思义,包含有"朴素的描写"之意.它是用铅笔.毛笔.钢笔.碳笔,甚至是现在流行的手写版的 ...

  • 三分钟上手菜,新手厨娘必学的,详细教程送给你

    私房浇汁豆腐 材料:豆腐适量.胡萝卜适量.洋葱适量.青椒适量.香菇适量.火腿适量.番茄酱适量.蚝油适量.盐适量.鸡精适量.黑胡椒适量 做法: 1.香菇泡软,和火腿,洋葱,青椒,胡萝卜都切丁备用. 2. ...

  • 现代行书学习的入门好字帖,笔法讲解,创作指导,学书法的好教程

    前言: 申明:本文由清雅阁书画原创首发头条,图文版权归清雅阁所有:如有转载请注明出处,致谢! 胡问遂(1918年7月24日-1999年2月19日),浙江绍兴人,沈尹默入室弟子,当代中国书法大家. 胡问 ...

  • 手机摄影从入门到精通,300集最新教程,视频 素材 拍摄 笔记

    手机摄影从入门到精通,300集最新教程,视频 素材 拍摄 笔记

  • 把彩线绕在珠针盒上竟能编花,邻居看了都抢着要学!(附教程)

    一块薄薄的彩色花片,不用钩也不用底布直接用线线就能编,既能用于衣服或包包上的装饰,还能单独做花片使用.拼起来各种大件物,不需要特别的编花器, 珠针盒,纸盘,甚至碗盘碟子,只要能把线绕起来的东西便能成为 ...

  • WGCNA分析,简单全面的最新教程(在线做,但也需要懂原理)

    生信学习的正确姿势(第三版) NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序 ...

  • 新手学打板深度进阶教程

    很多朋友问我该如何打板,为什么一定要在涨停价买入,究竟何为排板,何为扫板,以及一些打板的细节问题.在留言回复的时候,但总感觉还没有说清楚,所以今天特意抽个周末时间和大家聊聊打板这个话题. 一:为何要打 ...