
概括
这里介绍的是,在Nginx中开启webserver服务,对服务器上静态资源的访问。简单介绍nginx使用,不做升入讲解。
Nginx介绍
Nginx概括
Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。下面是Nginx的一个流程图。
Nginx充当代理角色,处理服务端的请求。有点像我们常说的网关。
Nginx作用和工作流程
总的来说Nginx的作用:
- 代理服务器作用,nginx作为反向代理。
- 负载均衡
反向代理服务器
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的基本介绍就是这些了,上面的博文内容基本不是自己所著。本着学习借鉴的心态,部分内容做了借鉴,归纳整理了一下。下面是我参考的博文链接: