使用docker搭建ansible学习环境

最近装了 Win10 + Ubuntu20.04 双系统,Win10 用来打游戏,Ubuntu 用来学习。

/手动狗头

环境:

1
2
Ubuntu20.04  Linux Kernel 5.4.0-48-generic
Docker Version 19.03.13

1、启动 2 个 centos7 镜像

1
2
3
4
docker pull centos:7
docker run -itd --name centos7-1 centos:7
docker run -itd --name centos7-2 centos:7
docker ps

2、容器中安装 openssh

1
2
3
docker exec -it centos7-1 bash
yum install net-tools
yum install passwd openssl openssh-server -y

修改 ssh 服务配置文件:

1
2
3
4
5
6
yum install vim
vim /etc/ssh/sshd_config
# 开启 22 端口监听(Port)
# 允许 any 地址登录(AddressFamily && ListenAddress)
# 允许 root 用户登录(PermitRootLogin)
# UseDNS no 或者注释掉

启动 ssh 服务报错:

1
2
3
4
[root@ b3426410ff43 /]# /usr/sbin/sshd
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key

解决方案:

1
2
3
[root@b3426410ff43 /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
[root@b3426410ff43 /]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
[root@b3426410ff43 /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''

然后再次启动 ssh 服务即可。

3、宿主机安装 ansible 并测试

安装 ansible:

1
2
3
4
# 方法 1(如果宿主机是 centos 注意安装一下 epel-release)
sudo apt-get install ansible
# 方法 2
pip install ansible

生成 ssh key:

1
2
3
4
ssh-keygen -t rsa
# 拷贝宿主机 public key 到两个容器内
ssh-copt-id root@container-ip1
ssh-copt-id root@container-ip2

测试一下:

1
ansible all -i root@172.17.0.2,root@172.17.0.3 -m ping


待续

阅读全文
运维日志20200915

“你的博客是复制粘贴的还是自己写的?”

阅读全文
正向代理和反向代理

转载自:https://www.cnblogs.com/taostaryu/p/10547132.html

什么是代理

代理其实就是一个中介,A和B本来可以直连,中间插入一个C,C就是中介。
刚开始的时候,代理多数是帮助内网client访问外网server用的
后来出现了反向代理,”反向”这个词在这儿的意思其实是指方向相反,即代理将来自外网客户端的请求转发到内网服务器,从外到内

正向代理

正向代理类似一个跳板机,代理访问外部资源

比如我们国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器,请求发到代理服,代理服务器能够访问谷歌,这样由代理去谷歌取到返回数据,再返回给我们,这样我们就能访问谷歌了

正向代理的用途:

(1)访问原来无法访问的资源,如google

(2) 可以做缓存,加速访问资源

(3)对客户端访问授权,上网进行认证

(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

反向代理

反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器

反向代理的作用:

(1)保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网

(2)负载均衡,通过反向代理服务器来优化网站的负载

总结

正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端.
反向代理即是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端

正向代理中,proxy和client同属一个LAN,对server透明;
反向代理中,proxy和server同属一个LAN,对client透明。
实际上proxy在两种代理中做的事都是代为收发请求和响应,不过从结构上来看正好左右互换了下,所以把后出现的那种代理方式叫成了反向代理

正向代理: 买票的黄牛

反向代理: 租房的代理

EOF

阅读全文
Nginx配置实例

反向代理

实例 1

实现效果

打开浏览器,输入地址,跳转到 Linux 的 Tomcat 的主页面中。

准备工作

安装 Tomcat,使用默认端口 8080。

下载、解压、运行 /bin/startup.sh 即可。

开放防火墙的 8080 端口,重启防火墙。

验证完了 tomcat 安装好后,可以关闭 8080 端口。

1
firewall-cmd --zone=public --remove-port=8080/tcp --permanent

配置 nginx

保存配置文件,reload 即可。

实例 2

实现效果

使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中

nginx 监听端口 80

访问 http://ip/edu/ 跳转到 127.0.0.1:8080

访问 http://ip/vod/ 跳转到 127.0.0.1:8081

准备工作

创建两个 tomcat 服务器,一个 8080,一个 8081(修改配置文件),复制两个 tomcat 文件夹,启动 tomcat。

创建文件夹和测试页面,放在 tomcat 下的 webapps 目录下即可。

配置 nginx

1
2
3
4
5
6
7
8
9
= 用户不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。

~ 用于表示 uri 包含正则表达式,并且区分大小写。

~* 用于表示 uri 包含正则表达式,不区分大小写。

^~ 用于不含正则表达式的 uri 前,要求 nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。

注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识!

负载均衡

Linux 下提供负载均衡的东西有:Nginx、LVS、Haproxy 等。

nginx 提供的几种负载均衡分配策略:

  • 轮询(默认)

    每个请求按时间顺序逐一分配到不同的服务器上,如果后端 down 掉,就自动剔除。

  • weight

    权重,默认权重为 1,权重越高被分配的客户端越多。

    指定轮询几率,weight 和访问比例成正比,用于后端服务器性能不均的情况。

    配置方式就是:

    1
    2
    3
    4
    upstream myserver {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    }
  • ip_hash

    每个请求按 ip 的 hash 结果分配,这样每个访客固定一个后端服务器,可以解决 session 共享的问题。

    1
    2
    3
    4
    5
    upstream myserver {
    ip_hash;
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    }
  • fair(第三方)

    按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    1
    2
    3
    4
    5
    upstream myserver {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    fair;
    }

实现效果

浏览器输入地址,负载均衡效果,访问平均到 8080 和 8081 中。

准备工作

两台 tomcat 服务器,8080 和 8081,创建统一的页面 edu/a.html。

配置 nginx

http 块中配置 upstream,在 location 中增加 proxy_pass。

动静分离

什么是动静分离?

简单来说就是动态和静态请求分来,不能理解成知识单纯的把动态页面和静态页面物理分离。

严格来说是动态请求跟静态请求分开,可以理解成用 nginx 处理静态页面,tomcat 处理动态页面。

动静分离从目前实现角度来说大致分为 2 种。

  1. 纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流的方案。

  2. 动态和静态文件混合在一起发布,通过 nginx 分开。

    通过 location 指定不同的后缀实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之间的请求和流量。具体 expires 定义:是给一个资源设置一个过期时间,无需去服务端验证,直接通过浏览器自身确认是否过期即可,不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用 expires 来缓存),我这里设置 3d,表示 3 天内访问这个 url,发送一个请求,比对服务器该文件最后更新时间有没有变换,没有变化则不从服务器专区,返回状态码 304,如果有修改,直接从服务器重新下载,返回状态码 200。

准备工作

准备静态资源,等会访问。

1
2
3
4
5
6
7
[root@centos-7 data]# ls image/
1.jpg
[root@centos-7 data]# ls www/
a.html
[root@centos-7 data]# pwd
/data
[root@centos-7 data]#

配置 nginx

当然,要加 expires 也是在 location 中加入。

高可用配置

如果只有一个 nginx 来做代理,挂了怎么办?

nginx 可以做主备使用的方案。

这两个 nginx 都需要需要用到 keepalived。

这两个 nginx 对外需要提供一个虚拟 ip。

准备工作

1、需要两台 nginx 服务器

2、需要在两台服务器上安装 keepalived

1
yum install keepalived

查看是否安装好

1
2
[root@centos-7 nginx]# rpm -q -a keepalived
keepalived-1.3.5-16.el7.x86_64

默认的 keepalived 配置在 /etc/keepalived/keepalived.conf

3、需要虚拟 ip

高可用配置

​ 主要修改 keepalived 的配置文件。

​ 配置文件如下文,注意有的 keeplived 使用 shell 来检测的,shell 脚本如下文。

然后将两台服务器上的 nginx 和 keepalived 都启动。

​ 启动 keepalived

​ systemctl start keepalived.service

​ 然后通过虚拟 IP 访问,虚拟 IP 在 keepalived 的配置文件中的虚拟ip。

1
2
3
4
5
6
7
8
9
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ]; then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then
killall keepalived
fi
fi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
! Configuration File for keepalived

# 全局定义
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL # 服务器的名字,这个就是全局的唯一值,在 /etc/hosts 中,也可以随便
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

# 虚拟 ip 配置
vrrp_instance VI_1 {
state MASTER # 备份服务器上将这里改为 BACKUP
interface eth0 # 网卡,
virtual_router_id 51 # 主、备机器的 virtual_router_id 必须相同,唯一标识
priority 100 # 主、备机器取不同的优先级,主机值较大,备份机器较小
advert_int 1 # 时间间隔,每隔多少秒发送一个心跳
authentication { # 权限校验方式,用的是 pass,密码是 1111
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { # VRRP H 虚拟地址,也可以绑定一个ip
192.168.200.16
192.168.200.17
192.168.200.18
}
}

# 如果使用 shell 脚本的方式检测,取消注释如下配置
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" # 上文中的 shell 路径
interval 2 # 检测脚本执行的间隔
weight 2 # 权重,比如 -20 当脚本条件成立,当前主机的权重降低 20
}
# 如果不使用上面的这个 vrrp_script 就使用下面的配置

virtual_server 192.168.200.100 443 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP

real_server 192.168.201.100 443 {
weight 1
SSL_GET {
url {
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

virtual_server 10.10.10.2 1358 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP

sorry_server 192.168.200.200 1358

real_server 192.168.200.2 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

real_server 192.168.200.3 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

virtual_server 10.10.10.3 1358 {
delay_loop 3
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP

real_server 192.168.200.4 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

real_server 192.168.200.5 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

EOF

阅读全文
Nginx基础知识

安装

安装 pcre

1
2
3
4
下载
解压
./configure
make && make install

更新依赖

1
sudo yum install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

安装 nginx

1
2
3
4
下载
解压
./configure
make && make install

CentOS7 的默认防火墙改成了 firewall,不再使用 iptables 为默认防火墙了

安装好 nginx 后需要打开 80 端口

1
2
3
4
5
firewall-cmd --list-all #查看开发的端口号
firewall-cmd --zone=public --add-port=80/tcp --permanent # 开发 80 端口 tcp 协议
# --zone #作用域
# --add-port=80/tcp #添加端口,格式:端口/通讯协议
# --permanent #永久生效,没有此参数重启后失效

firewall 相关命令

1
2
3
4
systemctl stop firewalld.service # 停止
systemctl start firewalld.service # 启动
systemctl status Firewalld.service # 状态
systemctl restart firewalld.service # 重启

相关命令

查看版本号:

1
2
[root@centos-7 sbin]# ./nginx -v
nginx version: nginx/1.19.1

停止:

1
2
3
[root@centos-7 sbin]# ./nginx -s stop
[root@centos-7 sbin]# ps aux | grep nginx
root 16465 0.0 0.0 112824 980 pts/0 S+ 21:31 0:00 grep --color=auto nginx

启动:

1
2
3
4
5
[root@centos-7 sbin]# ./nginx
[root@centos-7 sbin]# ps aux | grep nginx
root 16475 0.0 0.0 20568 620 ? Ss 21:32 0:00 nginx: master process ./nginx
nobody 16476 0.0 0.0 23092 1380 ? S 21:32 0:00 nginx: worker process
root 16478 0.0 0.0 112824 976 pts/0 S+ 21:32 0:00 grep --color=auto nginx

重加载:

1
2
3
4
[root@centos-7 sbin]# ./nginx -s reload
[root@centos-7 sbin]# ps aux | grep nginx
root 16475 0.0 0.0 20708 1344 ? Ss 21:32 0:00 nginx: master process ./nginx
nobody 16480 0.0 0.0 23208 1492 ? S 21:33 0:00 nginx: worker process

配置文件

一般在/usr/local/nginx/conf下。

注意:如果在 nginx 安装过程中指定了--prefix=/path/的情况下,这个目录就在指定的 path 下。

注意:yum 安装的可能不在这个目录下。

配置文件分为 3 个部分:

  • 全局块(对应下文中配置文件的 1-10 行)

    从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令。

    主要包括配置运行 nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型、配置文件的引入等。

    比如:worker_processes 1;是 nginx 服务器并发处理服务的关键配置,值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。(和 CPU 核心数量一致比较合理?)

  • events 块

    主要影响 nginx 服务器与用户的网络连接。

    比如:worker_connections 1024; 支持的最大连接数。

  • http 块

    配置中最频繁的步伐,代理、缓存、日志定义绝大多数功能和第三方模块的配置都在这里

    注意:http 块也可以包括 http 全局块、server 块。

    • http 全局块(下文中 17-33 行)
    • 包括文件引入、mime-type 定义、日志自定义、连接超时时间、单链接请求数上限等。
    • server 块
    • 和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。

    • 每个 http 块可以包括多个 server 块,每个 server 块就相当于一个虚拟主机。

    • 每个 server 块也分为全局 server 块以及可以同时包含多个 location 块。

    • 全局 server 块(下文 35-41 行)最常见的就是配置本虚拟主机的监听配置和本虚拟主机的名称或 IP 配置。

    • location 块,一个 server 块可以包含多个 location 块,主要是基于 nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如前面的/uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#user  nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;

server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root html;
index index.html index.htm;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

# location / {
# root html;
# index index.html index.htm;
# }
#}


# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;

# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;

# location / {
# root html;
# index index.html index.htm;
# }
#}

}

NGINX 原理

master & worker

image.png

1
2
3
[root@centos-7 keepalived]# ps aux | grep nginx
root 11262 0.0 0.0 20612 1424 ? Ss 14:14 0:00 nginx: master process ./nginx
nobody 18694 0.0 0.0 23124 1664 ? S 16:27 0:00 nginx: worker process

worker 是如何工作的?

争抢。

image.png

一个 master 和多个 worker 的好处?

1、可以使用 nginx -s reload 热部署

当使用了热部署后,之前有 client 请求的 worker 还是按照之前的规则进行处理请求,空闲的 worker 就可以根据新的配置来进行处理 client 的请求。

2、对于每个worker进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多。

3、采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master进程则很快启动新的worker进程。

当然,worker进程的异常退出,肯定是程序有bug了,异常退出,会导致当前worker上的所有请求失败,不过不会影响到所有请求,所以降低了风险。

设置多少个 worker 合适?

Nginx同redis类似都采用了io多路复用机制,每个worker都是一个独立的进程,但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求,即使是 千上万个请求也不在话下。

每个worker的线程可以把一个cpu的性能发挥到极致。所以worker数和服务器的cpu数相等是最为适宜的。设少了会浪费cpu,设多了会造成cpu频繁切换上下文带来的损耗。

1
2
3
4
5
6
7
8
# 设置worker数量
worker_processes 4

# work绑定cpu(4work绑定4cpu)
worker_cpu_affinity 0001 0010 0100 1000

# work绑定cpu (4work绑定8cpu中的4个)
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_proceses/4

因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。

发送请求,占用了woker的几个连接数?

2 个或者 4 个。

比如请求的是静态资源,一来一回是两个连接数。

如果访问别的资源比如说是 tomcat,则 worker 和 tomcat 也有一来一回两个连接,所以是 4 个连接数。

nginx有一个master,有四个woker,每个woker支持最大的连接数1024,支持的最大并发数是多少?

普通的静态访问最大并发数是: worker connections * worker processes/2

而如果是HTTP作为反向代理来说,最大并发数量应该是worker connections * worker processes/4

EOF

阅读全文