java架构之路-(nginx使⽤详解)nginx的安装和基本配置Linux是⼀套免费使⽤和⾃由传播的 ,是⼀个基于 和Unix的多⽤户、 、⽀持 和多 的操作系统。它能运⾏主要的Unix⼯具软件、应⽤程序和⽹络协议。它⽀持 和 硬件。Linux继承了Unix以⽹络为核⼼的设计思想,是⼀个性能稳定的多⽤户⽹络操作系统。
⼀,安装环境准备:
1.linux 内核
2.6及以上版本:使⽤uname -a查看即可。
2.GCC编辑器。
GCC可以⽤来编译C语⾔程序。Nginx没有直接提供⼆级制可执⾏程序,只能下载源码进⾏编译。
3.PCRE库。
PCRE是为了让Nginx⽀持正则表达式。
4.zlib库
zlib库⽤于HTTP包的内容做gzip格式的压缩,如果我们在f⾥配置了gzip on,并指定对于某些类型的HTTP响应使⽤gzip来进⾏压缩,以减少⽹络传输量。
5.OpenSSL开发库
如果我们的服务器不只是要⽀持HTTP,还需要在更安全的SSL协议上传输HTTP,那么就需要拥有OpenSSL了。另外,如果我们想使⽤MD5,SHA1等散列函数,那么也需要安装OpenSSL库。
安装命令:
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel
⼆,开始编译与安装:
1.Nginx下载地址:
直接去官⽹下载⽂件也可以,或者Linux直接输⼊ wget
2.解压tar -zxvf nginx-1.14.
3.默认安装(不采⽤任何模块)
./configure 等待执⾏结束以后,默认会安装在/usr/local/nginx下。
也可以添加模块。例如:
# 添加状态查查看模块
./configure --with-http_stub_status_module
4.启动
我们切换到默认安装⽂件夹下查看⼀下⽂件。⼤概是这个样⼦的。
我们输⼊./sbin/nginx 也就启动我们的ngxin了
#查看命令帮助
./sbin/nginx -?
#默认⽅式启动:
./sbin/nginx
#指定配置⽂件启动
./sbing/nginx -c /f
#指定nginx程序⽬录启动
./sbin/nginx -p /usr/local/nginx/
地址栏输⼊我们的IP,就可以访问Nginx了,默认监听80端⼝。
5.帮助命令
当我们输⼊./sbin/nginx -h我们会看到如下所⽰
-?,-h查看帮助⽂档。
-v(⼩写) 查看版本信息
-V(⼤写)查看详细版本信息,带插件信息
-t (⼩写)检查配置⽂件是否正确
-
T (⼤写)检查配置⽂件是否正确,并且查看⼀下。
-q 监听ngxin是否可以正常使⽤,以及查看端⼝。
-s 发送指令 ⽐如-s stop停⽌服务。 -s quit 处理完当前的任务就停⽌服务 -s reopen 重新加载配置⽂件(⽐如⽇志⽂件绑定句柄的⾏为)。-s reload(重现记载配置,相当于重新启动)
-p 设置前缀路径
-c 指定配置⽂件启动
-g 给予参数启动,例如./sbin/nginx -g "user root;"以root⽤户启动。
在刚才的解压⽬录下输⼊ ./configure --help 也会得到帮助命令。这个是编译过程的命令。太多了,没法⼀个个说,有的还⼏乎不⽤。可以
去官⽹⾃⼰查看,地址
说两个命令⽐较常⽤的。
./configure --prefix=path 指定你的安装路径,不然会默认安装在/usr/src/nginx下。
./configure --user=name 指定⽤户启动,设置⾮特权⽤户的名称,其凭据将由⼯作进程使⽤。安装后,可以f使⽤ 指令在配置⽂件中 更改名称 。默认⽤户名是nobody。如不设置,可能造成⽇志⽂件⽆法使⽤的情况发⽣
三,Nginx架构说明
我们在控制台输⼊ps -ef|grep nginx,这时我们会看到
他包含了两个进程,⼀个是master,⼀个是worker,master是核⼼管理进程,worker是实际⼯作的进程,⼀般来说⼀个worker运⾏在⼀个CPU的⼀个核上。如果我们是4核CPU,那么我们建议将worker进程配置成⼩于等于4的。
简单说⼀下nginx为啥快,⽤到了NIO为啥就快。
nginx接收到请求,会告知CPU,我们要得到什么数据,需要从硬盘哪个位置得到数据。但是它告知完事以后它就⾛了,不在原地等待数据的返回,返回后继续处理接收到的请求。nginx会保留⼀个实时查看哪些请求处理完成了,处理完成了就会返回到客户端。(粗略的说⼀下,后⾯会详细的说)
四,Nginx简单配置(正向代理)
我们的配置都存在/usr/local/nginx/f下,我们来看⼀下都是做什么的。
第⼀⾏,箭头所指位置就是我们的⼯作线程数,默认是1
事件模块,内部默认设置的是最⼤连接数1024。
java安装完整教程
http是最常⽤的配置。我们来详细说明⼀下。这⾥只说简单的配置,⾼级配置在优化Nginx再说。
http只能存在⼀个
sendfile 内核态是否到⽤户态的⼀个开关
keepalive_timeout 闲置连接最⼤超时时间。
server配置⼀个具体的站点,可以设置多个。
listen监听的端⼝号
server_name 监听的域名名称,可以使⽤通配符,可以配置多个,⽤空格分开。
匹配原则,优先最⼤匹配原则,左边匹配⼤于右边匹配,匹配完全⼀致上⾯的优先。
location 站点具体访问地址路径
root 路径,相对nginx设置的。
index页⾯⽂件名称。可以写多个⽤空格分开
现在我们将配置⽂件修改为
则你输⼊localhost/hello时,我们会访问的是nginx下的/www/hello⽬录,ngxin会默认把location的地址带过来。
我们可以这样来配置,就不再携带hello会直接访问nginx下的/www⽬录
location的配置语法为location 符号 url
符号包含 /基础url⽬录匹配
= 完全匹配
~ 验证⼤⼩写的URI匹配(正则)
~*忽略⼤写的URI匹配(正则)
^~只需要验证前半部分的URI参数(正则)
匹配优先规则:
1.精确匹配最⾼优先
2.正则匹配优先于^~匹配
3.前缀最⼤匹配优先
4.配置有上到下,相同匹配,上⾯的优先于下⾯的。
基于正则的动静分离样例:
location ~* \.(gif|jpg|png|css|js)$ {
root /usr/www/static;
}
防盗链配置演⽰:
# 加⼊⾄指定location 即可实现
valid_referers none blocked 域名;
if ($invalid_referer) {
return 403;
}
下载限速
location /download {
limit_rate 1m; //限制每秒的下载速度 1M/S
limit_rate_after 30m; // 超过30M之后的⽂件下载限速(限制⽂件⼤⼩)}
创建IP⿊名单
#封禁指定IP 加⼊⾄指定location 即可实现
deny 192.168.0.1;
allow 192.168.0.1;
#开放指定IP 段
allow 192.168.0.0/24;
#封禁所有
deny all;
#开放所有
allow all;
# 创建⿊名单⽂件
echo 'deny 192.168.0.132;' >> balck.ip
#http 配置块中引⼊ ⿊名单⽂件
include      black.ip;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。