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协议转发至指定服务器处理

相关推荐
IT成长日记1 天前
【Linux基础】Linux系统管理:GPT分区实践详细操作指南
linux·运维·服务器·gpt·parted·磁盘分区·fdisk
爱喝水的鱼丶1 天前
SAP-ABAP: ABAP ASSIGN COMPONENT 语句详解:动态字段符号的利器作用用法示例详解
运维·开发语言·sap·abap·开发经验·动态字段符号
清寒敲代码1 天前
k8s核心技术-Helm
运维·容器·kubernetes
quqi991 天前
Enable FIPS in ubuntu (by quqi99)
linux·运维·ubuntu
人工智能训练师1 天前
在Ubuntu中如何使用PM2来运行一个编译好的Vue项目
linux·运维·服务器·vue.js·ubuntu·容器
程序媛Dev1 天前
50.4k Star!我用这个神器,在五分钟内搭建了一个私有 Git 服务器!
运维·服务器·git
杏花春雨江南1 天前
腾讯云 CLB (Cloud Load Balancer) 为例,详细讲解如何配置 Nginx 集群
nginx·云计算·腾讯云
Lynnxiaowen1 天前
今天继续学习shell脚本
linux·运维·学习·云计算·bash
hmcjn(小何同学)1 天前
轻松Linux-9.进程间通信
linux·运维·服务器·c++·bash
上海达策TECHSONIC1 天前
经验分享:如何让SAP B1数据库性能提升50%
运维·数据库·运维开发