admin 管理员组

文章数量: 887032


2023年12月22日发(作者:simulink仿真后模块显示红色是什么意思)

Nginx相关知识点一.知识点

1、改变配置文件,平滑的重读配置文件

通过Nginx信号量控制:Kill -信号选项 nginx的主进程号 Kill -HUP `cat /xxx/path/log/`

2、开启文件压缩及设置缓存

缓存格式: expires 30s|m|h|d

Gzip on|off 是否开启gzip压缩

Nginx的反向代理缓存 (设置共享缓存轮循或HASH时,可减轻防问)

# proxy_cache_path 设置缓存目录

# keys_zone 设置共享内存以及占用空间大小

# max_size 设置缓存大小

# inactive 超过此时间则被清理

# use_temp_path 临时目录,使用后会影响nginx性能

proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=1m

use_temp_path=

location / {

proxy_pass http:加//tomcats;

# 启用缓存,和keys_zone一致

proxy_cache mycache;

# 针对200和304状态码缓存时间为8小时

proxy_cache_valid 200 304 8h;

}

3、location配置

location = /uri 精准匹配

location ^~ /uri 前缀匹配

location ~ /uri

location / 通用匹配

1. 精准匹配是优先级最高

2. 普通匹配(最长的匹配)

3. 正则匹配

4、负载均衡

upstream tomcat {

server 192.168.11.161:8080 max_fails=2 fail_timeout=60s weight=3;

server 192.168.11.159:8080;

}

server {

listen 80;

server_name localhost;

location / {

proxy_pass http: 加//tomcat;

}

}

负载均衡策略或者算法:

轮询算法(默认):如果后端服务器宕机以后,会自动踢出

ip_hash :根据请求的ip地址进行hash

权重轮询:

5、nginx与keepalived及LVS

Keepalived 是 Linux 下一个轻量级别的高可用解决方案,主要是通过 VRRP(虚拟路由器冗余协议)协议实现高可用功能的。简单来说,VRRP就是把多台路由器设备虚拟成一个设备,实现主备高可用的。在Nginx里面有个keepalived配置,主要是提高吞吐量

LVS 是 Linux Virtual Server 的缩写,也就是 Linux 虚拟服务器,在 linux2.4 内核以后,已经完全内置了 LVS 的各个功能模块。 它是工作在四层的负载均衡,类似于HAproxy, 主要用于实现对服务器集群的负载均衡

关于四层负载(LVS、F5),就是基于传输层,也就是ip+端口的负载,只负责转发;而七层负载就是需要基于 URL等应用层的信息来做负载,同时还有二层负载(基于 MAC)、三层负载(IP)

七层负载(Nginx、HAproxy) OSI网络层次模型的 7 层模模型(应用层、表示层、会话层、传输层、网络层、数据链路层、物理层);

OpenResty 是一个通过 Lua 扩展 Nginx 实现的可伸缩的 Web 平台,内部集成了大量精良的 Lua

库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

6、什么是动静分离

必须依赖服务器生存的我们称为动。不需要依赖容器的比如css/js或者图片等,这类就叫静。

配置静态类型在Nginx的conf目录下,有一个文件。

include

引入外部配置,提高可读性,避免单个配置文件过大

include ;

7、防盗链

一个网站上会有很多的图片,如果你不希望其他网站直接用你的图片地址访问自己的图片,或者希望对图片有版权保护。再或者不希望被第三方调用造成服务器的负载以及消耗比较多的流量问题,那么防盗链就是你必须要做的。

在Nginx中配置防盗链其实很简单,

语法: valid_referers none | blocked | server_names | string ...;

默认值: —

上下文: server, location

"Referer"请求头为指定值时,内嵌变量$invalid_referer被设置为空字符串,否则这个变量会被置成"1"。查找匹配时不区分大小写,其中none表示缺少referer请求头、blocked表示请求头存在,但是它的值被防火墙或者代理服务器删除,server_names表示referer请求头包含指定的虚拟主机名。

1. 配置如下

location ~ .*.(gif|jpg|ico|png|css|svg|js)$ {

#检查源端地址

valid_referers none blocked 192.168.11.153;

if ($invalid_referer) {

return 404;

}

root static;

}

需要注意的是伪造一个有效的"Referer"请求头是相当容易的,因此这个模块的预期目的不在于彻底地阻止这些非法请求,而是为了阻止由正常浏览器发出的大规模此类请求。还有一点需要注意,即使正常浏览器发送的合法请求,也可能没有"Referer"请求头。

8、跨域访问

什么叫跨域呢?如果两个节点的协议、域名、端口、子域名不同,那么进行的操作都是跨域的,浏览器为了安全问题都是限制跨域访问,所以跨域其实是浏览器本身的限制。

修改conf配置

add_header 'Access-Control-Allow-Origin' '*'; // #允许来自所有的访问地址

add_header 'Access-Control-Allow-Methods' 'GET,PUT,POST,DELETE,OPTIONS'; //支持的

请求方式

add_header 'Access-Control-Allow-Header' 'Content-Type,*'; //支持的媒体类型

9、 root 与 alias

假如服务器路径为:/home/aaa/files/img/

root 路径完全匹配访问

配置的时候为:

location /aaa {

root /home

}

用户访问的时候请求为: url:port/imooc/files/img/

alias 可以为你的路径做一个别名,对用户透明

配置的时候为:

location /hello {

alias /home/aaa

}

用户访问的时候请求为: url:port/hello/files/img/ ,如此相当于为目录 aaa 做一个自定义的别名。

10、一致性Hash

通过hash算法,如果节点新增或者减少,所有的地址都得进行重新hash,这样会带来大量的本地数据重新加载。使用一致性hash,以顺时针方向进行防问,当有改变,重新计算hash的用户就少,很多用户是不会重新进行计算的。

11、使用Nginx配置HTTPS域名证书

1. 安装SSL模块

要在nginx中配置https,就必须安装ssl模块,也就是: http_ssl_module 。

进入到nginx的解压目录: /home/software/nginx-1.16.1

新增ssl模块(原来的那些模块需要保留)

./configure

--prefix=/usr/local/nginx

--pid-path=/var/run/nginx/

--lock-path=/var/lock/

--error-log-path=/var/log/nginx/

--http-log-path=/var/log/nginx/

--with-http_gzip_static_module

--http-client-body-temp-path=/var/temp/nginx/client

--http-proxy-temp-path=/var/temp/nginx/proxy

--http-fastcgi-temp-path=/var/temp/nginx/fastcgi

--http-uwsgi-temp-path=/var/temp/nginx/uwsgi

--http-scgi-temp-path=/var/temp/nginx/scgi

--with-http_ssl_module

编译和安装

make

make install

2. 配置HTTPS

把ssl证书 *.crt 和 私钥 *.key 拷贝到 /usr/local/nginx/conf 目录中。

新增 server 监听 443 端口:

server {

listen 443;

server_name 域名;

# 开启ssl

ssl on;

# 配置ssl证书

ssl_certificate 1_域名.crt;

# 配置证书秘钥

ssl_certificate_key 2_域名.key;

# ssl会话cache

ssl_session_cache shared:SSL:1m;

# ssl会话超时时间

ssl_session_timeout 5m;

# 配置加密套件,写法遵循 openssl 标准

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

ssl_prefer_server_ciphers on;

location / {

proxy_pass http:加//tomcats

}

12、性能优化方面

查看请求数,配置的相关连接数,响应时间,是否动静分离、确认请求连接及防盗或者增加硬件配置等


本文标签: 请求 配置 负载