nginx(二)

一、不区分大小写

#正则表达式匹配:
location ~* /A.?\.jpg {
#匹配 已A后面一个或没有字符,已.jpg结尾的图片
root /opt/nginx/html/image;
}

只要是图片就去 images中找

server{

location ~* \.(gif|jpg|jpeg|bmp|png|tiff|tif|ico|wmf|js|css)$ {

root /data/nginx/images/;

}

}

#####匹配优先级#########

此处的优先级有小问题

server{

listen 80;

server_name www.pc.com;

location = / {

root /data/nginx/pc;

}

location / {

root /mnt/nginx/news;

}

}

location = /1.jpg {

root /data/nginx/static1;

index index.html;

}

location /1.jpg {

root /data/nginx/static2;

index index.html;

}

location ~* \.(gif|jpg|jpeg|bmp|png|tiff|tif|ico|wmf|js)$ {

root /data/nginx/static3;

index index.html;

}

[root@centos8 ~]# mkdir -p /data/nginx/static{1,2,3}

#上传图片到 /data/nginx/static{1,2,3} 并重启nginx访问测试

#匹配优先级:=, ^~, ~/~*,/

location优先级:(location =) > (location ^~ 路径) > (location ~,~* 正则顺序) >

(location 完整路径) > (location 部分起始路径) > (/)

二、生产

#直接匹配网站根会加速Nginx访问处理
location = /index.html {
......;
}

location / {
......;
}

#静态资源配置方法1
location ^~ /static/ {
......;
}

#静态资源配置方法2,应用较多
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
......;
}

#多应用配置
location ~* /app1 {
......;
}
location ~* /app2 {
......;
}

三、 验证模块 需要输入用户名和密码

配置

server {

listen 80;

server_name www.kgc.com;

location / {

root /data/nginx/html/pc;

}

location /admin{

root /data/nginx/html/pc;

auth_basic "admin site";

#提示信息,不是所有浏览器都有用

auth_basic_user_file/apps/nginx/conf.d/.httpuser;

#密码文件存放位置

}

}

四、htpasswd

第一次生成文件

htpasswd -c 文件路径 姓名 交互式生成密码

htpasswd -bc 文件路径 姓名 密码 直接将密码跟在后面

-c 代表新建用户名和密码对应的文件
-b 将密码跟在用户名后

非第一次

htpasswd 文件路径 姓名 交互式生成密码

htpasswd -b 文件路径 姓名 密码 直接将密码跟在后面

五、自定义错误页面

error_page code ... [=[response]] uri;

页面错误代码
error_page 固定写法
code 响应码
= 可以将响应码转换
uri 访问连接

六、日志位置存放

#格式

Syntax: error_log file [level];

error_log /apps/nginx/logs/kgc_error.log;

固定格式 文件路径 级别(info debug等 可以忽略不写)

七、检测文件是否存在

try_files会按顺序检查文件是否存在返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误。

语法:

Syntax: try_files file ... uri;

try_files file ... =code;

Default: ---

Context: server, location

www.baidu.com/test

八、长链接

http 基于tcp 协议先要三次握手然后 再传输数据

一次三次握手下载多个资源,一次三次握手下载一个资源

相关设置

keepalive_timeout timeout [header_timeout];

#设定保持连接超时时长,0表示禁止长连接,默认为75s,通常配置在http字段作为站点全局配置

keepalive_requests number;

#在一次长连接上所允许请求的资源的最大数量,默认为100次,建议适当调大,比如:500

可以加在全局或者 server

九、用户上传资料

client_max_body_size 1m;

#设置允许客户端上传单个文件的最大值,默认值为1m,上传文件超过此值会出413错误

client_body_buffer_size size;

#用于接收每个客户端请求报文的body部分的缓冲区大小;默认16k;超出此大小时,其将被暂存到磁盘上的由下面client_body_temp_path指令所定义的位置

client_body_temp_path path [level1 [level2 [level3]]];

#设定存储客户端请求报文的body部分的临时存储路径及子目录结构和数量,目录名为16进制的数字,使用hash之后的值从后往前截取1位、2位、2位作为目录名

上传文件大于限制 错误代码413

十、其他配置

directio size | off;

#操作完全和aio相反,aio是读取文件而directio是写文件到磁盘,启用直接I/O,默认为关闭,当文件大于等于给定大小时,例如:directio 4m;同步(直接)写磁盘,而非写缓存。

直接 写入 磁盘 还是等待一定数据量写入磁盘

open_file_cache off; #是否缓存打开过的文件信息

open_file_cache max=N [inactive=time];

#nginx可以缓存以下三种信息:

(1) 文件元数据:文件的描述符、文件大小和最近一次的修改时间

(2) 打开的目录结构

(3) 没有找到的或者没有权限访问的文件的相关信息

max=N:#可缓存的缓存项上限数量;达到上限后会使用LRU(Least recently used,最近最少使用)算法实现管理

inactive=time:#缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于

open_file_cache_min_uses

#指令所指定的次数的缓存项即为非活动项,将被删除

open_file_cache_valid time;

#缓存项有效性的检查验证频率,默认值为60s

open_file_cache_errors on | off;

#是否缓存查找时发生错误的文件一类的信息,默认值为off

open_file_cache_min_uses number;

#open_file_cache指令的inactive参数指定的时长内,至少被命中此处指定的次数方可被归类为活动项,默认值为1

范例:

open_file_cache max=10000 inactive=60s;

#最大缓存10000个文件,非活动数据超时时长60s

open_file_cache_valid 60s;

#每间隔60s检查一下缓存数据有效性

open_file_cache_min_uses 5;

#60秒内至少被命中访问5次才被标记为活动数据

open_file_cache_errors on;

#缓存错误信息

limit_except method ... { ... },仅用于location

#限制客户端使用除了指定的请求方法之外的其它方法

method:GET, HEAD, POST, PUT, DELETE,MKCOL, COPY, MOVE, OPTIONS, PROPFIND,

PROPPATCH, LOCK, UNLOCK, PATCH

limit_except GET {

allow 192.168.91.101;

deny all;

}

#除了GET和HEAD 之外其它方法仅允许192.168.1.0/24网段主机使用

十一、高级配置

基于nginx 模块 ngx_http_stub_status_module 实现,在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module,否则配置完成之后监测会是提示语法错误注意: 状态页显示的是整个服务器的状态,而非虚拟主机的状态

#配置示例:

location /nginx_status {

#stub_status;

auth_basic "auth login";

auth_basic_user_file /apps/nginx/conf/.htpasswd;

allow 192.168.0.0/16;

allow 127.0.0.1;

deny all;

}

实际操作

只需要添加 location

location /nginx_status {

stub_status;

}

#状态页用于输出nginx的基本状态信息:

#输出信息示例:

Active connections: 291

server accepts handled requests

16630948 16630948 31070465

上面三个数字分别对应accepts,handled,requests三个值

Reading: 6 Writing: 179 Waiting: 106

Active connections:

#当前处于活动状态的客户端连接数,包括连接等待空闲连接数=reading+writing+waiting

accepts:

#统计总值,Nginx自启动后已经接受的客户端请求的总数。

handled:

#统计总值,Nginx自启动后已经处理完成的客户端请求总数,通常等于accepts,除非有因worker_connections限制等被拒绝的连接

requests:

#统计总值,Nginx自启动后客户端发来的总的请求数。

Reading:

#当前状态,正在读取客户端请求报文首部的连接的连接数,数值越大,说明排队现象严重,性能不足

Writing:

#当前状态,正在向客户端发送响应报文过程中的连接数,数值越大,说明访问量很大

Waiting:

#当前状态,正在等待客户端发出请求的空闲连接数,开启 keep-alive的情况下,这个值等于active -- (reading+writing)

##############为了安全考虑#####################

增加验证模块

server{

listen 80;

server_name www.pc.com;

root /data/nginx/pc;

location /admin{

stub_status;

auth_basic "admin site";

auth_basic_user_file /apps/nginx/conf.d/.httpuser;

}

}

11.1 内置

$remote_addr;

#存放了客户端的地址,注意是客户端的公网IP

$proxy_add_x_forwarded_for

#此变量表示将客户端IP追加请求报文中X-Forwarded-For首部字段,多个IP之间用逗号分隔,如果请求中没有X-Forwarded-For,就使用$remote_addrthe "X-Forwarded-For" client request header field with the $remote_addr variable appended to it, separated by a comma. If the "X-Forwarded-For" field is not present in the client request header, the

$proxy_add_x_forwarded_for variable is equal to the $remote_addr variable.

客户机 代理1 代理2 nginx服务器

$proxy_add_x_forwarded_for: 在代理1 上存的是 客户机的ip

$proxy_add_x_forwarded_for: 在代理2 上存的是 客户机的ip,代理1的ip 用逗号隔开

$proxy_add_x_forwarded_for: nginx 上存的是 客户机的ip,代理1的ip,代理2的ip

$args;

#变量中存放了URL中的参数,例如:http://www.kgc.org/main/index.do?id=20190221\&partner=search

#返回结果为: id=20190221&partner=search 存放的就是这个

select * from table where id=20190221

$document_root;

#保存了针对当前资源的请求的系统根目录,例如:/apps/nginx/html

$document_uri;

#保存了当前请求中不包含参数的URI,注意是不包含请求的指令,比

如:http://www.kgc.org/main/index.do?id=20190221\&partner=search会被定义为/main/index.do

#返回结果为:/main/index.do

$host;

#存放了请求的host名称

limit_rate 10240;

echo $limit_rate;

#如果nginx服务器使用limit_rate配置了显示网络速率,则会显示,如果没有设置, 则显示0

$remote_port;

#客户端请求Nginx服务器时随机打开的端口,这是每个客户端自己的端口

$remote_user;

#已经经过Auth Basic Module验证的用户名

$request_body_file;

#做反向代理时发给后端服务器的本地资源的名称

$request_method;

#请求资源的方式,GET/PUT/DELETE等

$request_filename;

#当前请求的资源文件的磁盘路径,由root或alias指令与URI请求生成的文件绝对路径,如:/apps/nginx/html/main/index.html

$request_uri; https:// www.baidu.com/main/index.do?id=20190221&partner=search

#包含请求参数的原始URI,不包含主机名,相当于:document_uri?args,例如:/main/index.do?id=20190221&partner=search

$scheme;

#请求的协议,例如:http,https,ftp等

$server_protocol;

#保存了客户端请求资源使用的协议的版本,例如:HTTP/1.0,HTTP/1.1,HTTP/2.0等

$server_addr;

#保存了服务器的IP地址

$server_name;

#请求的服务器的主机名

$server_port; 443 https

#请求的服务器的端口号

$http_<name>

#name为任意请求报文首部字段,表示记录请求报文的首部字段

arbitrary request header field; the last part of a variable name is the field name converted to lower case with dashes replaced by underscores

#用下划线代替横线

#示例: echo $http_User_Agent;

$http_user_agent;

#客户端浏览器的详细信息

$http_cookie;

#客户端的cookie信息

$cookie_<name>

#name为任意请求报文首部字部cookie的key名

$http_<name>

#name为任意请求报文首部字段,表示记录请求报文的首部字段,ame的对应的首部字段名需要为小写,如果有横线需要替换为下划线

arbitrary request header field; the last part of a variable name is the field

name converted to lower case with dashes replaced by underscores #用下划线代替横线

#示例:

echo $http_user_agent;

echo $http_host;

$sent_http_<name>

#name为响应报文的首部字段,name的对应的首部字段名需要为小写,如果有横线需要替换为下划线,此变量有问题

echo $sent_http_server;

$arg_<name>

#此变量存放了URL中的指定参数,name为请求url中指定的参数

#对比 变量 $arg 是全部, 如果 要id 如下

echo $arg_id;

location /main {

index index.html;

default_type text/html;

echo "hello world,main-->";

echo $remote_addr;

echo $args;

echo $document_root;

echo $document_uri;

echo $host;

echo $http_user_agent;

echo $http_cookie;

echo $request_filename;

echo $scheme;

echo scheme://hostdocument_uri?args;

}

11.2 自定义变量

Syntax: set $variable value;

Default: ---

Context: server, location, if

11.3 自定义访问日志

log_format main '$remote_addr - remote_user \[time_local] "$request" '

'$status body_bytes_sent "http_referer" '

'"http_user_agent" "http_x_forwarded_for"'

'server_name:server_port';

log_format test '$remote_addr - remote_user \[time_local] "$request" '

'$status body_bytes_sent "http_referer" '

'"http_user_agent" "http_x_forwarded_for"'

'server_name:server_port';

格式可以定义多个

###注意如果开启 include 注意定义自配置文件与 日志格式的上下关系 , 日志格式一定要在 include 之前 否则会不生效。

11.4 nginx压缩功能

#启用或禁用gzip压缩,默认关闭

gzip on | off;

#压缩比由低到高从1到9,默认为1

gzip_comp_level level;

#禁用IE6 gzip功能

gzip_disable "MSIE [1-6]\.";

#gzip压缩的最小文件,小于设置值的文件将不会压缩

gzip_min_length 1k;

#启用压缩功能时,协议的最小版本,默认HTTP/1.1

gzip_http_version 1.0 | 1.1;

#指定Nginx服务需要向服务器申请的缓存空间的个数和大小,平台不同,默认:32 4k或者16 8k;

gzip_buffers number size;

#指明仅对哪些类型的资源执行压缩操作;默认为gzip_types text/html,不用显示指定,否则出错

gzip_types mime-type ...;

#如果启用压缩,是否在响应报文首部插入"Vary: Accept-Encoding",一般建议打开

gzip_vary on | off;

#预压缩,先压缩好,不用临时压缩,消耗cpu

gzip_static on | off;

11.5 https的功能

Web网站的登录页面都是使用https加密传输的,加密数据以保障数据的安全,HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议,HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。

nginx 的https 功能基于模块ngx_http_ssl_module实现,因此如果是编译安装的nginx要使用参数ngx_http_ssl_module开启ssl功能,但是作为nginx的核心功能,yum安装的nginx默认就是开启的,编译安装的nginx需要指定编译参数--with-http_ssl_module开启

参数:

ssl on | off;

#为指定的虚拟主机配置是否启用ssl功能,此功能在1.15.0废弃,使用listen [ssl]替代

listen 443 ssl;

ssl_certificate /path/to/file;

#指向包含当前虚拟主机和CA的两个证书信息的文件,一般是crt文件

ssl_certificate_key /path/to/file;

#当前虚拟主机使用的私钥文件,一般是key文件

ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];

#支持ssl协议版本,早期为ssl现在是TLS,默认为后三个

ssl_session_cache off | none | [builtin[:size]] [shared:name:size];

#配置ssl缓存

off: #关闭缓存

none: #通知客户端支持ssl session cache,但实际不支持

builtin[:size]:#使用OpenSSL内建缓存,为每worker进程私有

[shared:name:size]:#在各worker之间使用一个共享的缓存,需要定义一个缓存名称和缓存空间大小,一兆可以存储4000个会话信息,多个虚拟主机可以使用相同的缓存名称

ssl_session_timeout time;

#客户端连接可以复用ssl session cache中缓存的有效时长,默认5m

11.6 自定义图标

favicon.ico 文件是浏览器收藏网址时显示的图标,当客户端使用浏览器问页面时,浏览器会自己主动发起请求获取页面的favicon.ico文件,但是当浏览器请求的favicon.ico文件不存在时,服务器会记录404日志,而且浏览器也会显示404报错

#方法一:服务器不记录访问日志:

location = /favicon.ico {

log_not_found off;

access_log off;

}

#方法二:将图标保存到指定目录访问:

#location ~ ^/favicon\.ico$ {

location = /favicon.ico {

root /data/nginx/html/pc/images;

expires 365d; #设置文件过期时间

}

【定制小图标】

wget www.baidu.com/favicon.ico

放到主目录就可以了

不生效可以重新打开浏览器

十二、重写rewrite

语法:

if (条件匹配) {
action
}

使用正则表达式对变量进行匹配,匹配成功时if指令认为条件为true,否则认为false,变量与表达式之间使用以下符号链接:

= #比较变量和字符串是否相等,相等时if指令认为该条件为true,反之为false

!= #比较变量和字符串是否不相等,不相等时if指令认为条件为true,反之为false

~ #区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假

!~ #区分大小写字符,判断是否匹配,不满足匹配条件为真,满足匹配条件为假

~* #不区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假

!~* #不区分大小字符,判断是否匹配,满足匹配条件为假,不满足匹配条件为真

-f 和 !-f #判断请求的文件是否存在和是否不存在

-d 和 !-d #判断请求的目录是否存在和是否不存在

-x 和 !-x #判断文件是否可执行和是否不可执行

-e 和 !-e #判断请求的文件或目录是否存在和是否不存在(包括文件,目录,软链接)

#注意:

#如果$变量的值为空字符串或0,则if指令认为该条件为false,其他条件为true。

#nginx 1.0.1之前$变量的值如果以0开头的任意字符串会返回false

#示例:

http://www.baidu.com

3字打头重定向
301 永久重定向 将缓存记录在浏览器中
302 临时重定向 没有缓存 每次都要重定向

location /main {

index index.html;

default_type text/html;

if ( $scheme = http ){

echo "if-----> $scheme";

}

if ( $scheme = https ){

echo "if ----> $scheme";

}

#if (-f $request_filename) {

echo "$request_filename is exist";

#}

if (!-e $request_filename) {

echo "$request_filename is not exist";

#return ;

}

}

【用户访问的文件不存在 直接返回主页】

server {

listen 80;

server_name www.kgc.com;

root /data/nginx/pc/;

location / {

root /data/nginx/pc/;

}

location /test {

default_type text/plain;

return 301 http://www.baidu.com;

}

location /main {

index index.html;

default_type text/html;

if ( $scheme = http ){

return 666 "if-----> $scheme";

}

if (!-e $request_filename){

return 302 /index.html; #如果用户不存在直接跳转到主页面

}

}

}

www.kgc.com/main/xxxxx

#注意访问的main下的不存在 目录

#注意前面的if语句执行后会 停止匹配

【想控制所有网站可以 放到前面】

server {

listen 80;

server_name www.kgc.com;

root /data/nginx/pc/;

if (!-e $request_filename){

return 302 /index.html; #如果用户不存在直接跳转到主页面

}

location / {

root /data/nginx/pc/;

}

location /test {

default_type text/plain;

return 301 http://www.baidu.com;

}

location /main {

index index.html;

default_type text/html;

if ( $scheme = http ){

return 666 "if-----> $scheme";

}

}

}

12.1 return

return用于完成对请求的处理,并直接向客户端返回响应状态码,比如:可以指定重定向URL(对于特殊重定向状态码,301/302等) 或者是指定提示文本内容(对于特殊状态码403/500等),处于此指令后的所有配置都将不被执行,return可以在server、if 和 location块进行配置

语法:

www.kgc.com/test/

404

return code; #返回给客户端指定的HTTP状态码

return code [text]; #返回给客户端的状态码及响应报文的实体内容,可以调用变量,其中text如果有空格,需要用单或双引号

return code url; #返回给客户端的URL地址

12.2 set指令

指定key并给其定义一个变量,变量可以调用Nginx内置变量赋值给key,另外set定义格式为set $key value,value可以是text, variables和两者的组合。

location /main {

root /data/nginx/html/pc;

index index.html;

default_type text/html;

set $name kgc;

echo $name;

set $my_port $server_port(nginx 自带的变量 服务端口 一般80);

echo $my_port;

}

12.3 break

语法:

用于中断当前相同作用域(location)中的其他Nginx配置,与该指令处于同一作用域的Nginx配置中,位于它前面的配置生效,位于后面的 ngx_http_rewrite_module 模块中指令就不再执行,Nginx服务器在根据配置处理请求的过程中遇到该指令的时候,回到上一层作用域继续向下读取配置,该指令可以在server块和locationif块中使用

注意: 如果break指令在location块中后续指令还会继续执行,只是不执行ngx_http_rewrite_module 模块的指令,其它指令还会执行

语法:

if ($slow) {

limit_rate 10k;

break;

}

location /main {

root /data/nginx/html/pc;

index index.html;

default_type text/html;

set $name kgc;

echo $name;

break; #location块中break后面指令还会执行

set $my_port $server_port;

echo $my_port;

}

12.4 rewrite

rewrite可以配置在 server、location、if

语法:

rewrite可以配置在 server、location、if

语法格式 :

rewrite regex replacement(www.baidu.com) [flag];

正则匹配原始访问url 替代你想让客户访问的 标志 ()premanent301 redirect302 break last

正则表达式格式:

**. #匹配除换行符以外的任意字符
\w #匹配字母或数字或下划线或汉字
\s #匹配任意的空白符
\d #匹配数字 [0-9]
\b #匹配单词的开始或结束
^ #匹配字付串的开始
$ #匹配字符串的结束
* #匹配重复零次或更多次

  • #匹配重复一次或更多次
    ? #匹配重复零次或一次
    (n) #匹配重复n次
    {n,} #匹配重复n次或更多次
    {n,m} #匹配重复n到m次
    *? #匹配重复任意次,但尽可能少重复
    +? #匹配重复1次或更多次,但尽可能少重复
    ?? #匹配重复0次或1次,但尽可能少重复
    {n,m}? #匹配重复n到m次,但尽可能少重复
    {n,}? #匹配重复n次以上,但尽可能少重复
    \W #匹配任意不是字母,数字,下划线,汉字的字符
    \S #匹配任意不是空白符的字符
    \D #匹配任意非数字的字符
    \B #匹配不是单词开头或结束的位置
    [^x] #匹配除了x以外的任意字符
    [^kgc] #匹配除了kgc 这几个字母以外的任意字符**

12.5 防盗链

防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息,如果别人只链接了自己网站图片或某个单独的资源,而不是打开了网站的整个页面,这就是盗链,referer就是之前的那个网站域名,正常的referer信息有以下几种:

none:#请求报文首部没有referer首部,比如用户直接在浏览器输入域名访问web网站,就没有referer信息。

blocked:#请求报文有referer首部,但无有效值,比如为空。

server_names:#referer首部中包含本主机名及即nginx 监听的server_name。

arbitrary_string:#自定义指定字符串,但可使用*作通配符。示例: *.kgc.org www.kgc.*

regular expression:#被指定的正则表达式模式匹配到的字符串,要使用~开头,例如:~.*\.kgc\.com

实现防盗链

location ~* \.(jpg|gif|swf)$ {
root /data/nginx/pc;
valid_referers none blocked *.pc.com pc.com;
if ( invalid_referer ) { rewrite \^/ http://www.pc.com/error.png; #return 403 } } \~\* \\.(jpg\|gif\|swf):这段正则表达式表示匹配不区分大小写,以.jpg 或.gif 或.swf 结尾的文件
Valid_referers:设置信任的网站,可以正常使用图片。

None :浏览器中 referer 为空的情况,就是直接在浏览器访问图片。

Blocked :referer 不为空的情况 ,但是值被代理或防火墙删除了,这些值不以 http://或https://开头。后面的网址或者域名:referer 中包含相关字符串的网址。

If 语句:如果链接的来源域名不在 valid_referers 所列出的列表中,$invalid_referer 为1,则执行后面的操作,即进行重写或返回 403 页面。

十三、反向代理

正向代理:代理的是客户端去访问服务器。有两种作用:科学上网

反向代理:代理的是服务端

反向代理:reverse proxy,指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式,这是用的比较多的一种方式。

Nginx 除了可以在企业提供高性能的web服务之外,另外还可以将 nginx 本身不具备的请求通过某种预定义的协议转发至其它服务器处理,不同的协议就是Nginx服务器与其他服务器进行通信的一种规范,主要在不同的场景使用以下模块实现不同的功能

ngx_http_proxy_module: #将客户端的请求以http协议转发至指定服务器进行处理

ngx_http_upstream_module #用于定义为proxy_pass,fastcgi_pass,uwsgi_pass等指令引用的后端服务器分组

ngx_stream_proxy_module:#将客户端的请求以tcp协议转发至指定服务器处理

ngx_http_fastcgi_module:#将客户端对php的请求以fastcgi协议转发至指定服务器助理

ngx_http_uwsgi_module: #将客户端对Python的请求以uwsgi协议转发至指定服务器处理

相关推荐
小han的日常22 分钟前
接口自动化环境搭建
运维·自动化
小扳24 分钟前
Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
运维·spring boot·后端·mysql·spring cloud·docker·容器
运维小文28 分钟前
服务器硬件介绍
运维·服务器·计算机网络·缓存·硬件架构
是安迪吖39 分钟前
nfs服务器
运维·服务器
鱼骨不是鱼翅40 分钟前
模拟回显服务器
运维·服务器
Elastic 中国社区官方博客2 小时前
使用真实 Elasticsearch 进行更快的集成测试
大数据·运维·服务器·数据库·elasticsearch·搜索引擎·集成测试
舞动CPU7 小时前
linux c/c++最高效的计时方法
linux·运维·服务器
皮锤打乌龟8 小时前
(干货)Jenkins使用kubernetes插件连接k8s的认证方式
运维·kubernetes·jenkins
钰@8 小时前
小程序开发者工具的network选项卡中有某域名的接口请求,但是在charles中抓不到该接口
运维·服务器·小程序
wanhengwangluo9 小时前
云服务器和物理服务器的区别有哪些?
运维·服务器