Nginx安装与使用
Nginx
nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定,所以现在很多知名的公司都在使用nginx。
使用nginx的好处
- 占内存小,可以实现高并发连接、处理响应快。
- 可以实现http服务器、虚拟主机、反向代理、负载均衡。
- nginx配置简单
- 可以不暴露真实服务器IP地址
Nginx应用场景
- http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。
- 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
- 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
Windows环境下安装Nginx
下载地址:以nginx/Windows-1.14.2 为例,直接下载 nginx-1.14.2 .zip
启动方式
- 直接双击nginx.exe,双击后一个黑色的弹窗一闪而过
- 打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe 或者 start nginx ,回车即可
检查nginx是否启动成功
直接在浏览器地址栏输入网址 http://localhost:80,回车,出现以下页面说明启动成功
nginx.conf 介绍
nginx的配置由特定的标识符(指令符)分为多个不同的模块。
指令符分为简单指令和块指令。
- 简单指令格式:[name parameters;]
- 块指令格式:和简单指令格式有一样的结构,但其结束标识符不是分号,而是大括号{},块指令内部可以包含simple directives
和block directives, 可以称块指令为上下文(e.g. events, http, server, location)
在conf文件中,所有不属于块指令的简单指令都属于main上下文的,http块指令属于main上下文,server块指令http上下文。
配置静态访问
Web server很重要一部分工作就是提供静态页面的访问,例如images, html page。nginx可以通过不同的配置,根据request请求,从本地的目录提供不同的文件返回给客户端。
打开安装目录下的nginx.conf文件,默认配置文件已经在http指令块中创建了一个空的server块,在nginx-1.8.0中的http块中已经创建了一个默认的server块。内容如下:
server {listen 80;server_name localhost;location / {root html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}
}
Nginx实现反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
测试Demo
启动一个Tomcat 127.0.0.1:8080
使用nginx反向代理 www.test.com 直接跳转到127.0.0.1:8080
Host文件新增
127.0.0.1 www.test.com
nginx.conf 配置
server {listen 80;server_name www.test.com;location / {proxy_pass http://127.0.0.1:8080;index index.html index.htm;}
}
Nginx实现负载均衡
什么是负载均衡
负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务
负载均衡策略
轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream backServer{server 127.0.0.1:8080; server 127.0.0.1:8081;
}
指定权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream backserver {
server 192.168.128.14 weight=10;
server 192.168.128.15 weight=10;
}
IP绑定 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver {
ip_hash;
server 192.168.128.14:88;
server 192.168.128.15:80;
}
fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backserver {
server server1;
server server2;
fair;
}
url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
配置代码
upstream backserver { server 127.0.0.1:8080; server 127.0.0.1:8081;
}
server {listen 80;server_name www.test.com;location / {proxy_pass http://backserver;index index.html index.htm;}
}
宕机轮训配置规则
- 在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。
- index index.html index.htm #首页响应地址
- proxy_connect_timeout :后端服务器连接的超时时间_发起握手等候响应超时时间
- proxy_read_timeout:连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
- proxy_send_timeout :后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
nginx使用proxy模块时,默认的读取超时时间是60s。
erver {listen 80;server_name www.test.com;location / {proxy_pass http://backserver;index index.html index.htm;proxy_connect_timeout 1;proxy_send_timeout 1;proxy_read_timeout 1;}}
Nginx解决网站跨域问题
跨域是指a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,或是a页面为ip地址,b页面为域名地址,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。
跨域的常见解决方法
- jsonp 需要目标服务器配合一个callback函数。
- window.name+iframe 需要目标服务器响应window.name。
- window.location.hash+iframe 同样需要目标服务器作处理。
- html5的 postMessage+ifrme这个也是需要目标服务器或者说是目标页面写一个postMessage,主要侧重于前端通讯。
- CORS 需要服务器设置header :Access-Control-Allow-Origin。
- nginx反向代理需要搭建一个中转nginx服务器,用于转发请求。
nginx配置:
server {listen 80;server_name www.test.com;location /A {proxy_pass http://a.a.com:81/A;index index.html index.htm;}location /B {proxy_pass http://b.b.com:81/B;index index.html index.htm;}}
Nginx配置防盗链
防止第三方引用链接访问项目的图片,消耗服务器资源和网络流量,我们可以在服务器上做防盗链限制。
实现防盗链的方式有两种:refer方式和签名方式。
refer方式实现防盗链
工作模块:ngx_http_referer_module。
作用变量:$invalid_referer,全局变量。
配置域:server, location
server {listen 80;server_name www.test.com refer-test.test.com;root /usr/share/nginx/html;location ~*\.(gif|jpg|jpeg|png|bmp|swf)$ {valid_referers none blocked www.imcati.com;if ($invalid_referer) {return 403;}}}valid_referers: 指定资源访问是通过以下几种方式为合法,即白名单。
none:允许缺失的头部访问。
blocked:允许referer没有对应值的请求。
server_names:若referer站点域名与server_name中本机配的域名一样允许访问。
Nginx配置DDOS
防御DDOS是一个系统工程,攻击花样多,防御的成本高瓶颈多,防御起来即被动又无奈。DDOS的特点是分布式,针对带宽和服务攻击,也就 是四层流量攻击和七层应用攻击,相应的防御瓶颈四层在带宽,七层的多在架构的吞吐量。对于七层的应用攻击,我们还是可以做一些配置来防御的,例如前端是 Nginx,主要使用nginx的http_limit_conn和http_limit_req模块来防御。
限制请求次数
设置Nginx、Nginx Plus的连接请求在一个真实用户请求的合理范围内。比如,如果你觉得一个正常用户每两秒可以请求一次登录页面,你就可以设置Nginx每两秒钟接收一个客户端IP的请求(大约等同于每分钟个请求)。
limit_req_zone $binary_remote_addr zone=one:10m rate=2r/s;
server {
...
location /login.html {
limit_req zone=one;
...
}
}`limit_req_zone`命令设置了一个叫one的共享内存区来存储请求状态的特定键值,
在上面的例子中是客户端IP($binary_remote_addr)。location块中的`limit_req`
通过引用one共享内存区来实现限制访问/login.html的目的。
限制请求速度
设置Nginx、Nginx Plus的连接数在一个真实用户请求的合理范围内。比如,你可以设置每个客户端IP连接/store不可以超过10个。
漏桶算法可以很好地限制容量池的大小,从而防止流量暴增。如果针对uri+ip作为监测的key,就可以实现定向的设定指定ip对指定uri容量大小,超出的请求做队列处理(队列处理要引入消息机制)或者丢弃处理。这也是v2ex对流量拦截的算法,针对uri+ip做流量监测。
Nginx安装与使用相关推荐
- 一、nginx 安装
添加官方 yum 源 1 vim /etc/yum.repos.d/nginx.rep 输入以下内容(OS为你的系统,OSRELEASE 系统版本) 1 [nginx] 2 name=nginx re ...
- Linux环境Nginx安装多版本PHP
关于Linux环境Nginx安装与调试以及PHP安装参考此文即可:http://blog.csdn.net/unix21/article/details/8544922 linux版本:64位Cent ...
- red5下nginx安装配置
http://zfl110.iteye.com/blog/1155149 原址:http://lqw.iteye.com/blog/652763 安装Nginx 1.首先安装pcre-8.02.ta ...
- nginx安装 问题 1
./configure: error: the HTTP rewrite module requires the PCRE library 有时候,我们需要单独安装nginx,来处理大量的下载请求.单 ...
- Centos nginx 安装 源码方式安装
以 yum 方式安装 Nginx https://andyoung.blog.csdn.net/article/details/118802486 安装所需插件 1.安装gcc gcc是linux下的 ...
- nginx安装-添加MP4播放模块
nginx安装很简单,但是有的时候是已经安装的nginx ,升级增加nginx 模块功能. 最近公司要nginx增加一个可以播放 MP4的模块,安装还算顺利,不说废话上命令. 1 安装依赖 yum i ...
- Nginx安装、默认虚拟主机、Nginx用户认证、Nginx域名重定向
12.6 Nginx安装 安装包下载到/usr/local/src目录 [root@taoyuan ~]# cd /usr/local/src [root@taoyuan src]# wget htt ...
- windows下nginx安装、配置与使用
目前国内各大门户网站已经部署了Nginx,如新浪.网易.腾讯等:国内几个重要的视频分享网站也部署了Nginx,如六房间.酷6等.新近发现Nginx 技术在国内日趋火热,越来越多的网站开始部署Nginx ...
- Nginx安装、配置及使用总结
版权声明:本文为博主原创文章,未经博主允许不得转载. Nginx的安装.配置及使用总结: Nginx是一个高性能的HTTP及反向代理服务器,也是IMAP/POP3/SMTP代理服务器.在高并发情况下, ...
- Centos 6.0/ Nginx 安装与配置
系统:Centos 6.0 下载nginx(nginx-1.2.4.tar.g) http://nginx.org/ 下载pcre(pcre-8.31.tar.gz) http://pcre ...
最新文章
- 字节老板在群里diss员工:上班时间聊游戏,工作很闲吗?员工回怼:查聊天记录,看聊天时间占工作时间百分比!网友:真·扁平化管理!...
- 子弹短信新发布,支付宝即将入驻
- oracle备份恢复
- 企业级IM应该帮助员工提高绩效,避免无关的信息干扰
- 同源策略_如何支持跨域
- 最易忽视的肾虚4件事
- TVM:源码编译安装
- typedef 浅析
- mysql锁的一些理解简书_MySQL锁的基本概念
- 实现自我隐藏 CPU 利用率的最佳方法,不妨一试!
- tensorflow如何微调时如何只训练后两层_XLNet只存在于论文?都替你封装好了还不来用!...
- namp和nc扫描方式
- python的画图工具,Python画图工具matplotlib的安装
- 论文学习——《Affective Computing:A Review》
- 美国大学计算机理论专业phd,盘点美国那些计算机专业PHD超级难申请的大学
- vue 定制上传按钮的样式的两种方法
- JavaScript——操作表单(MD5验证)
- 使用augpush实现微信内跳转浏览器下载APP(包括apk和ios)的解决方案
- 【计算机科学】【2020.05】基于深度学习的计算蛋白质结构预测
- pip install时报错超时(pip._vendor.requests.packages.urllib3.exceptions.ReadTimeoutError: HTTPSConnec)解决方案
热门文章
- 服务器CPU作用是什么?
- Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering 论文阅读
- 最简单DIY基于ESP8266的智能彩灯②(在网页用按键和滑动条控制RGB灯)
- 10个谈话技巧让你平步青云
- SQL Server ansi_null_default | ansi_null_dflt_on
- 2021高考成绩特长生查询,2021高考体育生分数怎么算 体育四项评分标准及分值一览表...
- python3 实现应用启动及关键字检测
- 什么是无线HDMI,您应该使用它吗?
- 鸿湖万联与龙芯中科共建“芯片+操作系统”全自主产业生态链
- 元旦| 微软ATP伴你2023一路前行