全连接保持后,例如200个全连接到了nginx(假如nginx有2个工作线程) 那么每个工作线程都持有200个连接,也就是一共400个连接
那么此时tomcat的连接设置如果小于400,是不行的
我不太理解,这是不是可以理解为,这两个人(两个nginx工作线程),是共享这200个连接的,像卖东西一样,一起卖这200个,谁先卖完谁结束?来提高效率?
不完全正确。nginx的工作线程是独立的,每个工作线程都会处理一部分连接。当有新连接到来时,nginx会根据负载均衡算法将连接分配给其中一个工作线程处理。因此,如果有200个全连接到了nginx,那么每个工作线程会持有100个连接。这些连接是独立的,不会共享。如果tomcat的连接设置小于200,那么可能会出现连接被拒绝的情况。为了避免这种情况,可以增加nginx的工作线程数,或者增加tomcat的连接设置。
server{
listen 80;
server_name tomcat.baidu.com;
index index.php index.html index.htm;
location / {
proxy_pass http://127.0.0.1:8080; # 转发规则
proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这样访问 http://tomcat.baidu.com 时就会转发到本地的 8080 端口
server{
listen 80;
server_name baidu.wode.com;
index index.php index.html index.htm;
location / {
proxy_pass http://www.baidu.com;
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这样访问 http://baidu.wode.com 时就会转发到 http://www.baidu.com
server{
listen 80;
server_name 127.0.0.1; # 公网ip
index index.php index.html index.htm;
location / {
proxy_pass http://127.0.0.1:8080; # 或 http://www.baidu.com
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这样访问 http://127.0.0.1 时就会转发到本地的 8080 端口或 http://www.baidu.com
以上参考资料中没有涉及连接转发的效率问题,因此无法给出具体解决方案。