Nginx学习


Nginx内部工作流程图

概括

这里介绍的是,在Nginx中开启webserver服务,对服务器上静态资源的访问。简单介绍nginx使用,不做升入讲解。

Nginx介绍

Nginx概括

Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。下面是Nginx的一个流程图。
流程
Nginx充当代理角色,处理服务端的请求。有点像我们常说的网关。

Nginx作用和工作流程

总的来说Nginx的作用:

  1. 代理服务器作用,nginx作为反向代理。
  2. 负载均衡

反向代理服务器
1.我们这里讲的是Nginx作为反向代理服务器,而反向代理服务器是位于原始服务器端的服务器,反向代理服务器接受来自互联网的请求,然后将这些请求发送给内网的服务器,并将从内网的服务器获取结果返回给互联网上的客户端,反向代理服务器是代理的服务端,所以客户端是不知道反向代理服务器的存在的,服务端是知道反向代理服务器的(将多台服务器代理成一台服务器)。

说到代理在闲谈一下,正向代理。有助于理解全面,不至于冰山一角。 代理服务器:接受客户端的请求,做统一请求。 代理服务器是位于客户端和原始服务器的一台中间服务器,为了从原始服务器获取到内容,客户 端向代理服务器发送一个请求并带上目标服务器(原始服务器),代理服务器在接收到请求后就会将请求转发给原始服务器,并将从原始服务器上获取到的数据返回给客户端,代理服务器是代理的客户端,所以一般客户端是知道代理服务器的存在的,翻墙就用了代理服务器。

负载均衡
Nginx作为反向代理服务器,将多台服务器代理成一台代理服务器。向外暴露就一台服务器。外部客户端请求时,可以将多客户端请求做整合,并统一进行均匀分发,导向相应子服务器,来请求。减少服务器负担,提高服务吞吐量,及负载均衡。

使用教程

程序安装

程序安装很简单,直接去官网下载。click here !!链接:Nginx下载
下载完后是一个压缩文件,直接解压缩到到一个盘,就行。我这里解压缩到D盘。
在这里插入图片描述
这里我下载了两个,忽视第一个。那是我跟教程时下的。直接下载最想版,即第二个。开始解压
在这里插入图片描述
解压完成。设置配置文件,点conf文件,选择ngjinx.conf.在编辑器中配置。

配置介绍和配置教程

配置详情如下文件:

########### 每个指令必须有分号结束。#################
	#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;   #设置网路连接序列化,防止惊群现象发生,默认为on
	    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
	    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
	    worker_connections  1024;    #最大连接数,默认为512
	}
	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;  #拒绝的ip
           allow 172.18.5.54; #允许的ip           
        } 
        }
        }

重点关注以下几块是重要内容:

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker
process数等。

2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况

服务开启

·配置完成,就可以启动服务了。方法如下:

  • dos系统命令窗口启动
  • 为Nginx设置批处理文件,便捷启动关闭,错误检测。

1.打开dos命令行窗口执行,start nginx

窗口闪动,即为服务启动成功。同样也可以 tasklist /fi "imagename eq nginx.exe"检测是否成功。

启动成功:
在这里插入图片描述
下面外附加Nginx常用命令:
查看nginx是否启动 tasklist /fi “imagename eq nginx.exe”

nginx -s stop fast shutdown
nginx -s quit graceful shutdown
nginx -s reload 若nginx配置修改,此命令可对配置文件修改检测,从启动nginx。
nginx -s reopen 日志文件打开

设置批处理文件

@echo off
rem 提供Windows下nginx的启动,重启,关闭功能
 
echo ==================begin========================
 
cls 
::ngxin 所在的盘符
set NGINX_PATH=E:
 
::nginx 所在目录
set NGINX_DIR=E:\develop\nginx-1.10.1\
color 0a 
TITLE Nginx 管理程序增强版
 
CLS 
 
echo. 
echo. ** Nginx 管理程序  *** 
echo. *** create 2017-09-22 *** 
echo. 
 
:MENU 
 
echo. ***** nginx 进程list ****** 
::tasklist|findstr /i "nginx.exe"
tasklist /fi "imagename eq nginx.exe"
 
echo. 
 
    if ERRORLEVEL 1 (
        echo nginx.exe不存在
    ) else (
        echo nginx.exe存在
    )
 
echo. 
::*************************************************************************************************************
echo. 
	echo.  [1] 启动Nginx  
	echo.  [2] 关闭Nginx  
	echo.  [3] 重启Nginx 
	echo.  [4] 刷新控制台  
	echo.  [5] 重新加载Nginx配置文件
	echo.  [6] 检查测试nginx配置文件
	echo.  [7] 查看nginx version
	echo.  [0] 退 出 
echo. 
 
echo.请输入选择的序号:
set /p ID=
	IF "%id%"=="1" GOTO start 
	IF "%id%"=="2" GOTO stop 
	IF "%id%"=="3" GOTO restart 
	IF "%id%"=="4" GOTO MENU
	IF "%id%"=="5" GOTO reloadConf 
	IF "%id%"=="6" GOTO checkConf 
	IF "%id%"=="7" GOTO showVersion 
	IF "%id%"=="0" EXIT
PAUSE 
 
::*************************************************************************************************************
::启动
:start 
	call :startNginx
	GOTO MENU
 
::停止
:stop 
	call :shutdownNginx
	GOTO MENU
 
::重启
:restart 
	call :shutdownNginx
	call :startNginx
	GOTO MENU
 
::检查测试配置文件
:checkConf 
	call :checkConfNginx
	GOTO MENU
 
::重新加载Nginx配置文件
:reloadConf 
    call :checkConfNginx
	call :reloadConfNginx
	GOTO MENU
	
::显示nginx版本
:showVersion 
    call :showVersionNginx
	GOTO MENU	
	
	
::*************************************************************************************
::底层
::*************************************************************************************
:shutdownNginx
	echo. 
	echo.关闭Nginx...... 
	taskkill /F /IM nginx.exe > nul
	echo.OK,关闭所有nginx 进程
	goto :eof
 
:startNginx
	echo. 
	echo.启动Nginx...... 
	IF NOT EXIST "%NGINX_DIR%nginx.exe" (
        echo "%NGINX_DIR%nginx.exe"不存在
        goto :eof
     )
 
	%NGINX_PATH% 
	cd "%NGINX_DIR%" 
 
	IF EXIST "%NGINX_DIR%nginx.exe" (
		echo "start '' nginx.exe"
		start "" nginx.exe
	)
	echo.OK
	goto :eof
	
 
:checkConfNginx
	echo. 
	echo.检查测试 nginx 配置文件...... 
	IF NOT EXIST "%NGINX_DIR%nginx.exe" (
        echo "%NGINX_DIR%nginx.exe"不存在
        goto :eof
     )
 
	%NGINX_PATH% 
	cd "%NGINX_DIR%" 
	nginx -t -c conf/nginx.conf
 
	goto :eof
	
::重新加载 nginx 配置文件
:reloadConfNginx
	echo. 
	echo.重新加载 nginx 配置文件...... 
	IF NOT EXIST "%NGINX_DIR%nginx.exe" (
        echo "%NGINX_DIR%nginx.exe"不存在
        goto :eof
     )
 
	%NGINX_PATH% 
	cd "%NGINX_DIR%" 
	nginx -s reload
 
	goto :eof
	
::显示nginx版本
:showVersionNginx
	echo. 
	%NGINX_PATH% 
	cd "%NGINX_DIR%" 
	nginx -V
 	goto :eof

桌面新建.txt文件,把上面代码拷贝到文件内。然后保存到nginx的安装目录下,文件保存为.bat类型。注意文件编码格式保存为ANSI.否则,出现乱码。

双击打开该文件,它会打开一个同命令行一样的窗口。这时按窗口提示,操作即可。怎么样?是不是很方便。

在这里插入图片描述

周总结

OK,上面是对Nginx的安装,配置到使用流程完整介绍,这也是是本周的学习内容之一。另外,上周前几天做了一个纯js 的demo。开始做到完成。整个流程,大概花了一周,感觉时间有点磨。不过,该demo内容实在是太多了,整个项目,设计的js代码并不多,都是代码都是偏逻辑的。源码 [github](https://github.com/PachVerb/github-upload)。
另外,发表一下个人看法,学术之间的关连太紧密了,就仅仅在web开发这一块,我已经深深感受到了。为此我也要告诫自己,学习一定要认真且踏实,系统且全面。有些技术性的东西,不能仅仅是知道怎么做,还必须对它的原理,工作流程,在头脑中有大概印象。

说明

关于Nginx的基本介绍就是这些了,上面的博文内容基本不是自己所著。本着学习借鉴的心态,部分内容做了借鉴,归纳整理了一下。下面是我参考的博文链接:

CSDN | Nginx基本原理
知乎 | nginx介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值