前言

Nginx 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

常用用途:

✓ 1. 反向代理

✓ 2. 正向代理

这里我给来2张图,对正向代理与反响代理做个诠释,具体细节,大家可以翻阅下资料。



✓ 3. 负载均衡

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。

上3个图,理解这三种负载均衡算法的实现





✓ 4. HTTP服务器(包含动静分离)

优势:

Nginx 的编写有一个明确目标就是超越 Apache Web 服务器的性能。Nginx 提供开箱即用的静态文件,使用的内存比 Apache 少得多,每秒可以处理大约四倍于 Apache 的请求。 在低并发下 Nginx 的性能与 Apache 相当(有时候还低于),但是在高并发下 Nginx 能保持低资源低消耗高性能。Nginx 的优点还包括:高度模块化的设计,模块编写简单,以及配置文件简洁。

安装

yum install -y gcc-c++pcre pcre-develzlib zlib-developenssl openssl-devel

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

tar zxvf nginx-1.18.0.tar.gz

cd nginx-1.18.0

./configure --prefix=/usr/local/nginx

make&&make install

启动

cd /usr/local/sbin/nginx
./nginx

查看启动状态

  • 通过端口查询: lsof -i:80 #nginx默认是80端口

  • 通过进程查询: ps -ef | grep nginx

  • 访问网页查询 curl 127.0.0.1

如果查询结果与图片不一致请检查操作是否有误

常用的命令:

nginx -s stop :快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。

nginx -s quit :平稳关闭Nginx,保存相关信息,有安排的结束web服务。

nginx -s reload :因改变了Nginx相关配置,需要重新加载配置而重载。

nginx -s reopen :重新打开日志文件。

nginx -c filename :为 Nginx 指定一个配置文件,来代替缺省的。

nginx -t :不运行,而仅仅测试配置文件。nginx将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的 文件。

nginx -v:显示 nginx 的版本。

nginx -V:显示 nginx 的版本,编译器版本和配置参数

配置文件详解

如果你下载好啦,你的安装文件,不妨打开conf文件夹的nginx.conf文件,Nginx服务器的基础配置,默认的配置也存放在此。

在 nginx.conf 的注释符号为: #

...              #全局块

events {         #events块
...
} http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}

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

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

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

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

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

########### 每个指令必须有分号结束。#################
#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
}
}
}

上面是nginx的基本配置,需要注意:

几个常见配置项:

◆ $args #请求中的参数值

◆ \(uri #请求中的当前URI(不带请求参数,参数位于\)args)

◆ $host #HTTP请求行的主机名

◆ $hostname #主机名

◆ $content_length #"Content-Length" 请求头字段

◆ $content_type #"Content-Type" 请求头字段

◆ $pid #工作进程的PID ◆ $remote_addr #客户端地址

◆ $remote_port #客户端端口

◆ $remote_user #用于HTTP基础认证服务的用户名

◆ $request #代表客户端的请求地址

◆ $request_body #客户端的请求主体:此变量可在location中使用,将请求主体通过proxy_pass

◆ $request_length #请求的长度

◆ $request_method #HTTP请求方法,通常为"GET"或"POST"

◆ $request_time #处理客户端请求使用的时间; 从读取客户端的第一个字节开始计时

◆ $request_uri #包含客户端请求参数的原始URI ◆ $server_addr #服务器端地址

◆ $server_name #服务器名

◆ $server_port #服务器端口

◆ $status #HTTP响应代码

最新文章

  1. ARM11 S3C6410 硬件浮点(VFP)实现
  2. html 文本超过显示省略号
  3. Vware Workstation pro 12|虚拟机
  4. Ubuntu / Win7 安装db2 v10.5
  5. Linux搭建QT环境笔记
  6. aac格式解析
  7. HDU-4089 Activation (概率DP求概率)
  8. tar 命令打包,除了某个目录剩下的都打包
  9. 使用JQUERY操作Radio
  10. CentOS下将自编译的Apache添加为系统服务
  11. iOS 6.0中UIViewController被弃用的一些方法
  12. [HDU]4694 Important Sisters(支配树)
  13. Egg.js 中入参的校验
  14. centos下常用文件管理命令
  15. JS中常用的输出方式(五种)
  16. highcharts x轴中文刻度太长换行
  17. zabbix 报错汇总
  18. OAuth中client id的处理
  19. NullReferenceException,就不应该存在!
  20. struts struts拦截器(过滤器)

热门文章

  1. JWT实现过程及应用
  2. Java学习的第三十二天
  3. Cobalt Strike使用的一些技巧
  4. ERP收付款的操作与设计--开源软件诞生22
  5. python机器学习的开发流程
  6. Android NurReaderView 阅读器 (字符串-.txt文件)
  7. 《为研发同学定制的MySQL面试指南》-- 连载中
  8. streamreader
  9. leetcode21 surrounded regions
  10. leetcode114:valid-sudoku