-
单个进程监听多个端口及多个进程监听同一个端口
2019-08-27 19:16:52单个进程监听多个端口 单个进程创建多个 socket 绑定不同的端口,TCP, UDP 都行 多个进程监听同一个端口(multiple processes listen on same port) 方式1:通过 fork 创建子进程的方式可以实现,其他情况下不行。 当...单个进程监听多个端口
单个进程创建多个 socket 绑定不同的端口,TCP, UDP 都行
多个进程监听同一个端口(multiple processes listen on same port)
方式1:通过 fork 创建子进程的方式可以实现,其他情况下不行。
当连接到来时,子进程、父进程都可以 accept, 这就是著名的“惊群”问题(thundering herd problem)。
NGINX 的 master/work 处理方法:
Flow of an NGINX worker process
可以设置 ffd 的 close-on-exec flag 避免子进程继承 fd.
方式2:我们都知道socket是网络上两个进程之间的双向通信链路, 即
socket = 《A进程的IP地址:端口号,B进程的IP地址:端口号》
那么有个问题就很有意思了,不同的进程可以监听在同一个IP地址:端口号么?
根据Unix网络编程中的知识可知,服务端监听一个端口会经历:
1、根据套接字类型(Ipv4,Ipv6等)创建套接字socket
2、将套接字bind绑定到具体的网络地址和端口号
3、调用listen开始在这个套接字上进行监听。
Unix提供了一个接口setsockopt()可以在bind之前设置套接字选项,其中就包括REUSEADDR这个选项,表明可以多个进程复用bind函数中指定的地址和端口号。
由此可知多个应用(进程),包括同一个应用多次,都是可以绑定到同一个端口进行监听的。对应地C++、NET等高级语言也都提供了对应的接口。
从一些例子也可以看出,比如有时候你在服务器上执行netstat -ano可能会发现同一个应用程序在同一个端口上有多个监听,这是因为一些服务端应用程序可能会异常退出或者没有完全释放套接字,但是需要在重新启动时还能够再次监听同一个端口,所以需要能够具备重复监听同一个端口的能力,因此也出现上述情形。
在这总结一下多进程端口冲突问题的解决方法:
1、更换端口号,适用于不受设备端口号限制的场景;
2、父进程派生子进程,共享端口资源,适用于linux服务器端;
3、端口复用,根据五元组的唯一性,可以实现,适用于任何场景,但需要绑定不同的IP地址;
4、多进程共享socket,适用于主动发送报文的情况,对于主动接受报文的情景不适用;
5、端口管理进程,由一个端口对该端口的数据收发进行管理,别的进程要使用的话,需要实现本地多进程之间通信;
6、手动管理占用端口的进程(可操作性太差) -
Tomcat 配置多个端口号或多个应用
2019-01-18 11:05:45即一个service配置多个端口,项目可以通过多个端口访问。 修改tomcat-home\conf下的server.xml,在Service下配置多个<Connector>即可。 <Service name="Catalina"> &...一.在Tomcat下配置一个应用服务(service)中,配置多个端口号。
即一个service配置多个端口,项目可以通过多个端口访问。
修改tomcat-home\conf下的server.xml,在Service下配置多个<Connector>即可。
<Service name="Catalina">
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
<Connector port="8099" protocol="HTTP/1.1" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" URIEncoding="utf-8"
disableUploadTimeout="true" />
<Engine defaultHost="localhost" name="Catalina">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
</Host>
</Engine>
</Service>‘在这个应用里,可以用8080端口号访问服务,也可以用8099端口号来访问服务; 服务放置的路径由host决定,上例中服务放在webapps下。
即,以下两种方式访问同一个项目:
http://localhost:8080/项目名称
http://localhost:8099/项目名称
二、在一个Tomcat下配置多个服务,用不同的端口号。
即配置多个service,每个service可以配置多个端口。
修改tomcat-home\conf下的server.xml,添加多个Service即可。
注意Service name、Engine name、appBase,端口号别忘了修改,以免重复
<Service name="Catalina">
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
<Engine defaultHost="localhost" name="Catalina">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
</Host>
</Engine>
</Service>
<Service name="Catalina1">
<Connector connectionTimeout="20000" port="8099" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
<Engine defaultHost="localhost" name="Catalina1">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
<Host appBase="webapps1" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
</Host>
</Engine>
</Service>
<Service name="Catalina2">
<Connector connectionTimeout="20000" port="8098" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
<Engine defaultHost="localhost" name="Catalina2">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
<Host appBase="webapps2" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
</Host>
</Engine>
</Service>以上三个service,发布的路径不同,项目分别发布在webapps、webapps1、webapps2下,
访问不同的项目的方法:
http://localhost:8080/项目名称1
http://localhost:8099/项目名称2
http://localhost:8088/项目名称3
-
iptables 添加多个端口
2015-06-30 13:51:14iptables可以方便的配置多个端口。其中根据端口的连续性,又可分为连续端口配置和不连续端口配置。 1、连续端口配置 如: -A INPUT -p tcp -dport 21:25 -j DROPA INPUT -p tcp -dport 21:25 -j DROP 注:...网上抄录:
iptables可以方便的配置多个端口。其中根据端口的连续性,又可分为连续端口配置和不连续端口配置。
1、连续端口配置
如:
-A INPUT -p tcp -dport 21:25 -j DROP
A INPUT -p tcp -dport 21:25 -j DROP注:这里是英文状态下的冒号。
2、使用multiport参数配置不连续端口
如:
-A INPUT -p tcp -m multiport -dport 21:25,135:139 -j DROP
A INPUT -p tcp -m multiport –dport 21:25,135:139 -j DROP -
Nginx监听多个端口
2019-01-16 10:28:10server { listen 8080;#此处可以写多个端口 listen 8085; server_name test.com; location /api/info/ { proxy_pass http://localhost:8086/api/info/; proxy_set_header Ho...server { listen 8080;#此处可以写多个端口 listen 8085; server_name test.com; location /api/info/ { proxy_pass http://localhost:8086/api/info/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_redirect off; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /api/create/ { proxy_pass http://localhost:8086/api/create/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_redirect off; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~ .*\.(htm|html|gif|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|doc|ppt|pdf|xls|mp3|wma|woff|jpg|js|css|map)$ { #设置静态网页直接由nginx进行处理 root D:/mydemo; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
-
一个Tomcat配置多个端口
2016-09-27 18:35:23一、Tomcat 安装后本身...二、Tomcat 8.0 配置多个端口,其实也就是给Tomcat增加几个server,并设置对应目录。下面以增加两个端口号为例 第一步、修改server.xml[..\Tomcat 8.0\conf] (1)Tomcat提供的如下: -
Nginx负载均衡(监听多个端口)
2020-04-24 12:00:241、监听多个端口 监听多个端口,我们可以写多个server,如: server { listen 80; ... } server { listen 90; ... } 2、实现每个端口的反向代理与负载均衡 先写一个upstream,命名为cluster, 里面写入... -
一个tomcat配置多个端口
2016-08-31 00:14:49一、Tomcat 安装后本身提供了一个server,端口配置默认是8080,...二、Tomcat 6.0 配置多个端口,其实也就是给Tomcat增加几个server,并设置对应目录。下面以增加两个端口号为例 第一步、修改server.xml[..\To -
IDEA同一个项目启动多个端口
2020-04-15 10:37:16IDEA同一个项目启动多个端口1.找到启动配置2.选择正常项目修改名称3.复制项目启动 1.找到启动配置 2.选择正常项目修改名称 3.复制项目启动 -Dserver.port=9092 然后分别依次启动即可 ... -
多进程监听同个端口及单进程监听多个端口的php版本实现
2017-03-20 21:31:31单个进程能否监听多个端口? 当然随着学习的深入,答案均是肯定的,在这个过程中笔者为了验证,用php写了两个例子,在这里分享出来,供有需要的php同学学习跟理解。 在分享例子之前,需要先介绍两个php在socket... -
Idea中一个服务按多个端口同时启动
2019-06-13 20:25:59Idea中一个服务按多个端口同时启动 前言 为了创建高可用的微服务,本文将介绍对于一个微服务的Client,如何配置多个端口同时启动。 解决方法 首先,创建一个spring boot的Client(不用在配置文件中配置端口号),... -
tomcat配置多个端口
2015-04-27 15:31:45二、Tomcat 6.0 配置多个端口,其实也就是给Tomcat增加几个server,并设置对应目录。下面以增加两个端口号为例 第一步、修改server.xml[..\Tomcat 6.0\conf] (1)Tomcat提供的如下: Xml代码 -
phpstudy配置多域名和多个端口的详细步骤
2018-12-04 11:12:47通常我们在本地搭建多个网站的时候,就会用到配置多个站点域名,或者是多个端口。很多朋友可能是刚开始操作phpstudy,对于多域名,尤其是多个端口不会操作。今天,小彦结合自己的实际经验,整理了一下多域名多端口... -
netty做服务端监听多个端口推送数据并区分接收每个端口响应回来的数据
2019-08-20 10:05:53netty 做服务端监听多个端口推送数据并区分接收每个端口响应回来的数据: @Sharable:被注解的ChannelHandle对应的同意实例可以被加入到一个或者多个ChannelPipelines一次或者多次,而不存在竞争条件。 * 如果在创建... -
frp内网穿透配置多个端口
2020-02-24 10:57:28frp内网穿透配置多个端口 一、frp项目的官方中文文档地址 https://github.com/fatedier/frp/blob/master/README_zh.md 二、部署准备 1、公网ip(云服务器一台) 2、内网服务器一台(个人电脑) 3、域名(可选) 4、frp... -
Linux下nginx配置多个端口
2018-08-11 13:50:52将自己的项目放了进来,配置了端口号。发现phpmyadmin打不开了。看到这句话 include vhost/test.conf; 还以为在vhost文件下放入...其实:和win下面配置多个端口号一样。如下: user www www; worker_processes ... -
Intellij IDEA 配置Jetty多个端口
2016-11-29 13:47:47之前都是用Tomcat这个容器,后来做的项目需要用到jetty,于是就在IDEA上配置了Jetty,但是后来我发现Jetty并不像我以往使用tomcat时可以配置多个端口用来部署不同的项目。 IDEA 启动Jetty时首先会检测8080的端口①... -
网络-一个进程是否能拥有多个端口
2019-03-05 09:26:361.端口理解 其它网友的观点 ... 博文中打的比喻个人觉得很形象,特此引用一下。...其它网友也有相同的问题,大部分人认为一个进程可以拥有多个端口。 端口 下面是引用别人博客的话,同样觉得挺形象。socke... -
以太网交换芯片,能把一个端口输入的数据包,同时从其他多个端口发出吗
2016-05-25 09:09:51以太网交换芯片,能把一个端口输入的数据包,同时从其他多个端口发出吗 -
docker部署nginx 并实现反向代理 配置多个域名多个端口
2019-07-09 17:16:26文章目录docker部署nginx 并实现反向代理 配置多个域名多个端口1. 安装nginx:2. 以终端的方式打开镜像容器default.conf:nginx.conf:3. 在linux中创建挂载配置文件和文件夹4. 创建容器并挂载文件和文件夹这一步:如果... -
JAVA tomcat配置多个端口对应多个应用(一般是指war包)
2016-08-01 15:18:49一个tomcat设置多个端口,多个端口对应多个应用 -
Tomcat 6.0 配置多个端口与多个项目
2014-12-23 15:25:35二、Tomcat 6.0 配置多个端口,其实也就是给Tomcat增加几个server,并设置对应目录。下面以增加两个端口号为例 第一步、修改server.xml[..\Tomcat 6.0\conf] (1)Tomcat提供的如下: Catalina"> 8 -
使用nginx向外暴露一个端口而内部进行转发并只使用本机的多个端口
2019-04-29 14:03:57----------------使用nginx向外暴露一个端口而内部进行转发并只使用本机的多个端口------------------ 此情况适合被限制只能访问唯一一个端口的场景,例如公司限制了用户只能访问唯一的80端口。 之前使用过sslh, ... -
Linux系统配置ssh监听多个端口方法
2018-09-29 12:37:45在配置文件/etc/ssh/sshd_config文件中修改 Port 5022 #AddressFamily any#listenAddress 0.0.0.0:22 #ListenAddress :: 然后重启sshd,命令为service sshd restart,使其生效 ...2、要想sshd程序监听多个端口... -
Tomcat8配置多个端口访问各端口对应的JavaWeb项目
2017-11-02 16:34:50背景:最近遇到个项目部署的小要求:一个tomcat下配置多个端口去访问端口对应的JavaWeb项目原理:tomcat中conf下server.xml文件中的service节点即可配置tomcat的端口号及对应的项目配置步骤:1.打开tomcat下conf... -
firewalld添加多个端口限制等高级功能
2019-12-22 11:26:12国内网站基本找不到详细的配置细节,只是基本的命令普及!...如果我们使用的服务规则比较多,例如包含多个端口,直接添加非常难管理。这时,我们需要自定义service来统合这些规则。 我们可以编写一个service的x... -
Redis——部署及开启多个端口服务
2019-04-09 19:02:35一、以默认端口启动和安装服务器 1.安装服务 redis-server --service-install redis.windows.conf 2.启动服务 redis-server --service-...二、开启多个端口服务器 1.配置文件 将redis.windows-service.con... -
Golang net/http包 同时监听多个端口
2018-07-25 15:01:28在golang中 需要同时监听多个端口 对http请求进行相同的处理(handler) 实现 代码如下 很简单 func handler1(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello!") } func main() { ...