Nginx的认知
- 概念
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等 - 作用
1、负载均衡 轮询、加权、iphash 2、正向代理反向代理 Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器 3、动静分离 4、web缓存 Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理 - 安装
1、安装编译环境
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
2、解压nignx包
tar -zxvf nginx-1.20.2.tar.gz
3、配置nginx环境
cd nginx-1.20.2
./configure
4、编译并安装
make
make install
5、查找安装路径
whereis -b nginx
6、启动、停止nginx
cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop --停止
./nginx -s quit --安全退出
./nginx -s reload
7、查询nginx进程
ps aux|grep nginx
8、重启nginx
./nginx -s quit
./nginx
9、 重新加载配置文件
./nginx -s reload
10、开机自启动
.即在rc.local增加启动代码就可以了。
vi /etc/rc.local
/usr/local/nginx/sbin/nginx
chmod 755 /etc/rc.local
11、若启动成功,但连接失败(查看防火墙)
systemctl status firewalld
firewall-cmd --state
service firewalld start
service firewalld restart
service firewalld stop
firewall-cmd --list-all
firewall-cmd --query-port=8080/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload
1、firwall-cmd :是linux提供的一个firewall的工具
2、--permanent :表示设置为持久
3、--add-port:标识添加端口
//全局配置
events {
worker-connections 1024;
}
http{
upstream xxx{
//负载均衡
//加权
servier 127.0.0.1:8080 weiget=1;
servier 127.0.0.1:8082 weiget=2;
//iphash;
ip_hash;
}
server{
listen 80; //监听的端口
server_name localhost; //域名
location{
//根目录地址
root html;
index index.html index.html
proxy_pass http:xxx
}
location /admin{
xxx
}
}
}
- 全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker、process数等。
- events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
- http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
- server块:配置虚拟主机的相关参数,一个http中可以有多个server。
- location块:配置请求的路由,以及各种页面的处理情况。
error_log log/error.log debug;
events {
accept_mutex on;
multi_accept on;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
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;
sendfile on;
sendfile_max_chunk 100k;
keepalive_timeout 65;
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 ~*^.+$ {
proxy_pass http://mysvr;
deny 127.0.0.1;
allow 172.18.5.54;
}
}
}
1.$remote_addr 与 $http_x_forwarded_for 用以记录客户端的ip地址;
2.$remote_user :用来记录客户端用户名称;
3.$time_local : 用来记录访问时间与时区;
4.$request : 用来记录请求的url与http协议;
5.$status : 用来记录请求状态;成功是200;
6.$body_bytes_s ent :记录发送给客户端文件主体内容大小;
7.$http_referer :用来记录从那个页面链接访问过来的;
8.$http_user_agent :记录客户端浏览器的相关信息;
-
nginx 原理 master-workers的机制的好处 首先,对于每个 worker 进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多。其次,采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master 进程则很快启动新的worker 进程。当然,worker 进程的异常退出,肯定是程序有 bug 了,异常退出,会导致当前worker 上的所有请求失败,不过不会影响到所有请求,所以降低了风险。 需要设置多少个 worker Nginx 同 redis 类似都采用了 io 多路复用机制,每个 worker 都是一个独立的进程,但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求, 即使是千上万个请求也不在话下。每个 worker 的线程可以把一个 cpu 的性能发挥到极致。所以 worker 数和服务器的 cpu数相等是最为适宜的。设少了会浪费 cpu,设多了会造成 cpu 频繁切换上下文带来的损耗。 #设置worker 数量。 worker_processes 4
worker_cpu_affinity 0001 0010 0100 1000
worker_cpu_affinity 0000001 00000010 00000100 00001000
连接数 worker_connection
这个值是表示每个 worker 进程所能建立连接的最大值,所以,一个 nginx 能建立的最大连接数,应该是 worker_connections * worker_processes。当然,这里说的是最大连接数,对于HTTP 请 求 本 地 资 源来 说 , 能 够 支 持 的 最大 并 发 数 量 是 worker_connections *worker_processes,如果是支持 http1.1 的浏览器每次访问要占两个连接,所以普通的静态访问最大并发数是: worker_connections * worker_processes /2, 而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections * worker_processes/4。因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。
https://www.cnblogs.com/tangy1/p/15069909.html
|