Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
 
一,安装环境准备:
1.linux 内核2.6及以上版本:使用uname -a查看即可。
2.GCC编辑器。
GCC可以用来编译C语言程序。Nginx没有直接提供二级制可执行程序,只能下载源码进行编译。
3.PCRE库。
PCRE是为了让Nginx支持正则表达式。
4.zlib库
zlib库用于HTTP包的内容做gzip格式的压缩,如果我们在nginx.conf里配置了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下载地址:http://nginx.org/en/download.html
直接去官网下载文件也可以,或者Linux直接输入 wget http://nginx.org/download/nginx-1.14.0.tar.gz
2.解压tar -zxvf nginx-1.14.0.tar.gz
3.默认安装(不采用任何模块)
./configure 等待执行结束以后,默认会安装在/usr/local/nginx下。
也可以添加模块。例如:
# 添加状态查查看模块
./configure --with-http_stub_status_module
4.启动
我们切换到默认安装文件夹下查看一下文件。大概是这个样子的。
我们输入./sbin/nginx 也就启动我们的ngxin了
#查看命令帮助
./sbin/nginx -?
#默认方式启动:
./sbin/nginx
#指定配置文件启动
./sbing/nginx -c /tmp/nginx.conf
#指定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 也会得到帮助命令。这个是编译过程的命令。太多了,没法一个个说,有的还几乎不用。可以去官网自己查看,地址http://nginx.org/en/docs/configure.html
说两个命令比较常用的。
./configure --prefix=path 指定你的安装路径,不然会默认安装在/usr/src/nginx下。
./configure --user=name 指定用户启动,设置非特权用户的名称,其凭据将由工作进程使用。安装后,可以nginx.conf使用user指令在配置文件中 更改名称 。默认用户名是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/conf/nginx.conf下,我们来看一下都是做什么的。
第一行,箭头所指位置就是我们的工作线程数,默认是1
事件模块,内部默认设置的是最大连接数1024。
http是最常用的配置。我们来详细说明一下。这里只说简单的配置,高级配置在优化Nginx再说。
http只能存在一个
sendfile 内核态是否到用户态的一个开关
keepalive_timeout 闲置连接最大超时时间。
server配置一个具体的站点,可以设置多个。
listen监听的端口号
server_name 监听的域名名称,可以使用通配符,可以配置多个,用空格分开。
匹配原则,优先最大匹配原则,左边匹配大于右边匹配,匹配完全一致上面的优先。
 
location 站点具体访问地址路径
root 路径,相对nginx设置的。
index页面文件名称。可以写多个用空格分开
现在我们将配置文件修改为
则你输入http://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;

最进弄了一个公众号,小菜技术,欢迎大家的加入

java架构之路-(nginx使用详解)nginx的安装和基本配置的更多相关文章

  1. java架构之路(Sharding JDBC)mysql5.7yum安装和主从

    安装mysql5.7单机 1.获取安装yum包 [root@iZm5e7sz135n16ua2rmbk6Z local]# wget http://dev.mysql.com/get/mysql57- ...

  2. java实现微信扫一扫详解

    java实现微信扫一扫详解 一.微信JS-SDK参数配置及查找 JS安全域名配置(查找:微信公众号里-公众号设置-功能设置页) 注:1.安全域名外网必须可以访问的到  2.域名不能有下划线  3.要将 ...

  3. nginx之旅(第一篇):nginx下载安装、nginx启动与关闭、nginx配置文件详解、nginx默认网站

    一.nginx下载安装 版本nginx 1.15.5 系统环境centos7.5(本机ip192.168.199.228) 关闭selinux 和防火墙firewall 1.下载 wget http: ...

  4. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  5. 牛客网 Java 工程师能力评估 20 题 - 详解

    牛客网 Java 工程师能力评估 20 题 - 详解 不知在看博客的你是否知道 牛客网,不知道就太落后了,分享给你 : 牛客网 此 20 题,绝对不只是 20 题! 免责声明:本博客为学习笔记,如有侵 ...

  6. Activiti架构分析及源码详解

    目录 Activiti架构分析及源码详解 引言 一.Activiti设计解析-架构&领域模型 1.1 架构 1.2 领域模型 二.Activiti设计解析-PVM执行树 2.1 核心理念 2. ...

  7. java的集合框架最全详解

    java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...

  8. Java学习-007-Log4J 日志记录配置文件详解及实例源代码

    此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:20 ...

  9. 【转】Java魔法堂:String.format详解

    Java魔法堂:String.format详解     目录     一.前言    二.重载方法     三.占位符     四.对字符.字符串进行格式化     五.对整数进行格式化     六. ...

  10. java线程池的使用与详解

    java线程池的使用与详解 [转载]本文转载自两篇博文:  1.Java并发编程:线程池的使用:http://www.cnblogs.com/dolphin0520/p/3932921.html   ...

随机推荐

  1. arcgis api for javascript 学习(五) 实现地图绘制工具

    1.本文实现的功能为鼠标与地图之间的交互,能够在地图上绘制不同形状的图形 2.代码部分主要讲到的为Graphic函数的相关功能 <!DOCTYPE html> <html> & ...

  2. iOS10 新特性一

    链接:http://www.jianshu.com/p/0cc7aad638d9 1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是 ...

  3. mysql-python 安装错误 fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory

    安装mysql-python之前, 请先安装setuptools. https://pypi.python.org/pypi/setuptools/7.0 下载mysql-python. 下载源码包. ...

  4. Troubleshooting ORA-01555/ORA-01628/ORA-30036 During Export and Import (Doc ID 1579437.1)

    Troubleshooting ORA-01555/ORA-01628/ORA-30036 During Export and Import (Doc ID 1579437.1) APPLIES TO ...

  5. C++学习四 冒泡排序法的一些改进

    冒泡排序法需要两次扫描,所以从时间复杂度来说,是O(n2). 如果用图形表示,是这样的: 但是我们可以加以改进. 首先是,如果在排序中间,整个向量已经达到了有序状态,可以直接跳出来. 这样它的复杂度由 ...

  6. 3、zabbix组件之间的关系

    我们在安装zabbix的时候安装了四个软件:zabbix-server.zabbix-server-mysql.zabbix-web-mysql.zabbix-agent,那么这个四个软件之间有什么关 ...

  7. ADB端口5037被占用 导致adb 停止工作

    解决ADB端口占用问题 方式一 5037为adb默认端口,若5037端口被占用,打开cmd,输入以下指令, 1.查看占用端口的进程PID  netstat -aon|findstr 5037 2. 通 ...

  8. 解决angular单页面页面底部跳转到新页面滚动条不在顶部的问题

    以上jquery,下面js this.router.events.subscribe((event) => { document.body.scrollTop=0; }); 另一种写法 impo ...

  9. mysql group by 的用法解析

    1. group by的常规用法 group by的常规用法是配合聚合函数,利用分组信息进行统计,常见的是配合max等聚合函数筛选数据后分析,以及配合having进行筛选后过滤. 聚合函数max se ...

  10. SVG开发注意事项

    SVG Scalable Vector Graphics 可缩放的矢量图形 起源 在 2003 年一月,SVG 1.1 被确立为 W3C 标准,在过去很长一段时间,网页注重文字和图片的展示, SVG就 ...