Nginx----基础

静态资源服务

  通过本地文件系统提供服务:对css,js文件,图片等静态文件

反向代理服务

  缓存:将一些数据经常不变的,缓存到Nginx中,直接给用户提供服务

  负载均衡

api服务

  OpenResty

  数据库的服务比较简单,tps和并发远远高于应用服务,所有Nginx可以直接访问数据库提高性能

  利用nginx强大的并发性能,实现web防火墙等复杂的业务功能;

Nginx优点

高并发,高性能:对每一个连接使用的内存尽量少

可扩展性好:nginx模块化非常稳定使得Nginx第三方模块生态圈丰富。

高可靠性:运行时间长,不需要经常重启服务器

热部署:不停止服务下,升级Nginx

BSD许可证:可以修改源代码运行在商业的服务器上是合法的

Nginx组成

  nginx二进制可执行文件:由各个模块编译出的文件

  nginx.conf:配置文件

  access.log:记录每一条http请求信息

  error.log:错误消息

 

Nginx各版本

开源版:nginx.org
商业版:nginx.com(不开源)

 

 

阿里巴巴的Tengine

  Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。

缺点:没有办法根据nginx的官方版本同步升级

OpenResty

  OpenResty(也称为 ngx_openresty)是一个全功能的 Web 应用服务器。它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项。

  开源OpenResty:http://openresty.org

  商业版OpenResty:https://openresty.com

 

下载Nginx

windows

  直接在官网上下载windows版本即可,安装的目录不要带有中文,否则启动nginx会报错,可以直接运行

linux

  首先linux可能需要安装其他的模块(nginx中gzip模块需要zlib库,rewrite模块需要pcre库,ssl功能需要openssl库),如果需要的时候可以来下载...

  参考https://www.cnblogs.com/woniusky/p/11050499.html

1、nginx下载

wget http://nginx.org/download/nginx-1.16.1.tar.gz

2、编译和安装

参考官方文档:http://nginx.org/en/docs/configure.html

./configure ---prefix=/usr/local/nginx/  可以指定其他的,不指定就是默认值,执行完成后,会生成objs目录
make                                     可以在objs目录下看到一个nginx文件,这个文件是为了在版本升级时,不能进行make install,需要将该(nginx)copy到prefix安装目录中sbin目录下
make install                             安装完成之后,可以去prefix指定的目录中查看安装后的文件

基本使用

1、Nginx命令行

格式:nginx -s reload
帮助:-?-h
使用指定的配置文件:-c
指定运行目录:-p
发送信号:-s
测试配置文件是否有语法错误:-t -T
打印nginx的版本信息、编译信息等:-v -V

2、常用命令

./nginx              //启动,如果启动后访问不了,看看是不是防火墙禁止了端口(nginx默认监听80端口)
./nginx -s reload    //重载配置文件,在sbin目录下(如果我们修改了配置文件中的配置(我们安装nginx的目录中的conf),我们希望立刻生效,但是不会重启nginx)
./nginx -s stop      //关闭

 

firewall-cmd  --list-all :查看防火墙开放的端口

  

 

 添加对外开放的端口

sudo firewall-cmd --add-port=80/tcp --permanent
firewall-cmd  -reload   重启防火墙

3、热部署

  当我们的nginx处于运行状态,我们需要对他进行版本升级

  我们可以将sbin目录中的nginx执行二进制文件备份一下

cp nginx nginx.old

  编译好最新的nginx二进制文件去替换sbin目录下的nginx文件(在objs目录中有我们编译好的nginx,用它来替换sbin目录中nginx)

   给正在运行的nginx master进程发送一个信号,我们需要版本升级了

    ps-ef I grep nginx

    kill -USR2 13195:此时会新启动一个nginx master进程

    kill -WINCH 13195:关闭老的进程,此时的worker process关闭了,但是master process没有关闭是为了如果新版本有问题,方便我们回退版本

 

4、日志切割

可以写一个脚本,每隔一段时间进行切割日志

#!/bin/bash
#Rotate the Nginx logs to prevent a single logfile from consuming too much disk space.
LOGS_PATH=/usr/Local/openresty/nginx/logs/history 
CUR_LOGS_PATH=/usr/Local/openresty/nginx/logs 
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
mv ${CUR_LOGS PATH}/taohui_access.1og ${LOGS_PATH}/taohui_access_${YESTERDAY}.1og
mv ${CUR_LOGS_PATH}/maomaoxiong_access.1og ${L0GS_PATH}/maomaoxiong_access_${YESTERDAY}.1og
mv ${CUR_LOGS_PATH}/error.1og ${LOGS_PATH}/error_${YESTERDAY}.1og
##向Nginx主进程发送USR1信号。USR1信号是重新打开日志文件,1是数字1
kil1-USR1 $(cat /usr/Local/openresty/nginx/Logs/nginx.pid)

 

4、nginx配置文件详细

event之前的部分:全局块,从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令

event:events 涉及的指令主要影的 Nginx 服务器与用户的网络连接

http块

  http全局块:配置的指令包括文件引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求数上限等。

  server块:这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。

  location块:这块的主要作用是基于Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如前面的/uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

    localtion语法说明

location [=|~|~*|^~] uri{}

  1、=:用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
  2、~:用于表示uri包含正则表达式,并且区分大小写。
  3、~*:用于表示uri包含正则表达式,并且不区分大小写。
  4、^~:用于不含正则表达式的 uri前,要求Nginx 服务器找到标识uri和请求字

########### 每个指令必须有分号结束。#################
#user administrator administrators;  #配置用户或者组,默认为nobody nobody。
#worker_processes 2;  #允许生成的进程数,默认为1
#pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址
error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
events {accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为onmulti_accept on;   #设置一个进程是否同时接受多个网络连接,默认为off#use epoll;        #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventportworker_connections  1024;    #最大连接数
http {include       mime.types;   #文件扩展名与文件类型映射表default_type  application/octet-stream; #默认文件类型,默认为text/plain#access_log off; #取消服务日志    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式access_log log/access.log myFormat;  #combined为日志格式的默认值sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。upstream mysvr {   server 127.0.0.1:7878;server 192.168.10.121:3333 backup;  #热备}error_page 404 https://www.baidu.com; #错误页server {keepalive_requests 120; #单连接请求上限次数。listen       4545;   #监听端口server_name  127.0.0.1;   #监听地址       location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。#root path;  #根目录#index vv.txt;  #设置默认页proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表deny 127.0.0.1;  #拒绝的ipallow 172.18.5.54; #允许的ip           } }
}

 

转载于:https://www.cnblogs.com/yanxiaoge/p/11535673.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#开发IE控件

c#开发IE控件主要是对BHO对象是使用,但是我们知道BHO是一个COM对象,而在.NET下开发基于COM的应用,总觉得不是很简单,这里有受控代码与COM的调用,我查找了下,国内并没有此类信息,下面是译稿,翻译的不好,欢迎指出.介绍:我们在浏览Internet信息的时候,往往需要增强用户浏览信息的,…

JVM直接内存

概述 直接内存并不是虚拟机运行时数据区的一部分,也不是Java 虚拟机规范中农定义的内存区域。在JDK1.4 中新加入了NIO(New Input/Output)类,引入了一种基于通道(Channel)与缓冲区(Buffer)的I/O 方式,它可以使用native…

英语----专业单词

directive (滴 ‘ruai k tive) n:指令determine 【di tε:min】 (de ter min) v:确定 词根:term 边界 distributions (dis tree biu tion)v:分配 C:发行版 exact (衣 ge za k t) adj:确切的 ex&#xff1a…

js遍历table

js遍历table var tableObj document.getElementById("tableName");var str "";for(var i0;i<tableObj.rows.length;i){for(varj0;j<tableObj.rows[i].cells.length;j){//str tableObj.rows[i].cells[j].innerHTML" ";for(var z0;z<…

深入理解JVM—JVM内存模型

我们知道&#xff0c;计算机CPU和内存的交互是最频繁的&#xff0c;内存是我们的高速缓存区&#xff0c;用户磁盘和CPU的交互&#xff0c;而CPU运转速度越来越快&#xff0c;磁盘远远跟不上CPU的读写速度&#xff0c;才设计了内存&#xff0c;用户缓冲用户IO等待导致CPU的等待成…

Nginx----进阶

用Nginx搭建一个静态的web资源服务器/动静分离 简单使用 1、可以在安装的nginx目录新建自己的目录zy&#xff08;和conf在一个目录下&#xff0c;也就是和html目录在一个目录下&#xff0c;注意如果使用/zy&#xff0c;那么zy目录需要创建在linux根目录&#xff09;&#xff0c…

ASP.NET页面生命周期描述

ASP.NET页面生命周期描述2008-09-12 09:25在以前写个一篇关于ASP.NET页面生命周期的草稿,最近又看了看ASP.NET&#xff0c;做个补充,看看页面初始过程到底是怎么样的 下面是ASP.NET页面初始的过程: 1. Page_Init(); 2. Load ViewState; 3. Load Postback data; 4. Page_Load();…

小程序·云开发的HTTP API调用丨实战

小程序云开发之httpApi调用。 小程序云开发之httpApi调用&#xff08;返回“47001处理”&#xff09; 技术栈 采用 nodejs express 搭建web服务器&#xff0c;采用 axios 请求第三方 httpApi nodejsexpressaxios 项目结构 通过应用生成器工具 express-generator 可以快速创建一…

Java hashCode() 和 equals()使用的场景

第3部分 hashCode() 的作用 hashCode() 的作用是获取哈希码&#xff0c;也称为散列码&#xff1b;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。 hashCode() 定义在JDK的Object.java中&#xff0c;这就意味着Java中的任何类都包含有hashCo…

坚守基本的职业信仰

深陷公司的政治斗争会让任何当事人都疲于奔命&#xff0c;尤其是当这种斗争的双方都是您的上级。除非您一开始就能够知道最终的斗争结果&#xff0c;否则任何具有倾向性的言行都会给自己带来难堪。 深陷入别人的职业斗争是一个职业经理人职业生涯最大的不幸&#xff0c;除非…

Zookeeper----基本原理

Zookeeper作用是什么&#xff1f; 协调分布式系统中的多个服务器&#xff0c;使得系统可以正常工作。 Zookeeper提供了什么&#xff1f; 实际上他只提供了三个东西&#xff0c;一个是文件系统&#xff0c;一个是通知机制&#xff0c;还有一个是集群管理机制 Zookeeper可以做什么…

Java 中 Comparable 和 Comparator 比较

Comparable 简介 Comparable 是排序接口。 若一个类实现了Comparable接口&#xff0c;就意味着“该类支持排序”。 即然实现Comparable接口的类支持排序&#xff0c;假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”&#xff0c;则该List列表(或数组)可以通…

spgridview的过滤功能回调时发生错误~

代码中启用了过滤功能&#xff0c; 但当点击过滤的列时发生错误&#xff1a; error: spgridview_filtercallbackerrorhandler() was called - result 回调时发生错误... 详细见&#xff1a; HTML代码&#xff1a; AllowFiltering"True"FilterDataFields",Name,,…

web---SSL/TSL

对称加密 加密算法秘钥&#xff08;双方持有相同的秘钥&#xff09;&#xff0c;A使用加密算法秘钥加密文件&#xff0c;B使用加密算法秘钥解密文件&#xff1b; 演示一个对称加密RC4算法 注意&#xff1a;RC4加密是有漏洞的 明文和秘钥进行异或得到密文&#xff0c;密文和秘钥…

讨论了好久的问题,IE、Firefox下CSS图片垂直居中的问题

通过百度和谷歌找了好久都没找着一个合适的方法。以下是自己找出的一种方法&#xff0c;自认为还可以&#xff0c;而且&#xff0c;也方便简单。IE:当容器为div,或者tr,只要把容器的Css属性line-height设置成容器的高度就行了.当容器为a,且容器的css属性display为inline-block或…

Nginx----实现https站点

1、首先给域名设置证书&#xff0c;可以去阿里云购买 1、下载自动化脚本 目的&#xff1a;帮我们自动在nginx配置中添加证书 yum install python2-certbot-nginx2、输入命令 certbot --nginx --nginx-server-root/usr/local/openresty/nginx/conf/ -d zy.com 选择我们的url请求…

TCP/IP四层模型和OSI七层模型的概念

TCP/IP四层模型 TCP/IP是一组协议的代名词&#xff0c;它还包括许多协议&#xff0c;组成了TCP/IP协议簇。TCP/IP协议簇分为四层&#xff0c;IP位于协议簇的第二层(对应OSI的第三层)&#xff0c;TCP位于协议簇的第三层(对应OSI的第四层)。 TCP/IP通讯协议采用了4层的层级结构&…

setsockopt()用法(转载)

1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分&#xff09;调用 closesocket&#xff08;一般不会立即关闭而经历TIME_WAIT的过程&#xff09;后想继续重用该socket&#xff1a; BOOL bReuseaddrTRUE; setsockopt(s,SOL_SOCKET ,…

Nginx----OpenResty

概要 OpenResty是一个基于Nginx与Lua的高性能Web平台&#xff0c;其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。OpenRestye通过汇聚各种设计精良的Nginx模块&#xff08;主要由O…

《深入浅出Google Android》即将隆重上市!

《深入浅出 Google Android 》 作者在线答疑活动开始啦 &#xff1a;http://www.hiapk.com/bbs/forum-41-1.html 随着越来越多的手机 厂商和移动运营商加入了开放手机联盟&#xff0c; Android 平台 越来越受到广大开发 者的关注和推崇。 本书是是国内最早的 And…