nginx是如何实现端口复用的??

发布于 09-06 07:53 字数 89 浏览 18 评论 0

RT
一份nginx实例通常由多进程构成
那么nginx是如何实现端口复用的?

端口复用的技术知道一些,但不知nginx采用的是哪一种

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

奈何桥上唱咆哮2022-09-13 07:53:08

nginx1.9之后,通过SO_REUSEPORT支持端口服用,该socket参数由操作系统提供,允许多个套接字侦听相同的IP地址和端口组合,内核负责调度。
https://www.nginx.com/blog/so...

别把无礼当个性2022-09-13 07:53:08

那些多进程都是 fork 出来的,父进程 fork 出来的子进程是可以继承使用父进程的 socket 的。

稀香2022-09-13 07:53:08

提供一个思路供参考,这也是我的个人服务端器nginx的配置:

worker_processes  2;

error_log  /mnt/logs/nginx/error.log error;

events {
    use   epoll;
    multi_accept on;
    worker_connections  5120;
}

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

    sendfile        on;
    keepalive_timeout  65;

    fastcgi_intercept_errors on;

    client_max_body_size 6M;
    client_body_buffer_size 1M;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    
    server {
        listen       80;
        server_name  www.sosout.com;
        root /mnt/html;
        index index.jsp index.htm index.html;
        location ~ ^/favicon\.ico$ {
            root /mnt/html;
        }
        if ($host ~* "^(.*?)\.sosout\.com$") {
            set $domain $1;
        }
        location /blog {
            if ($domain = "blog.sosout.com") {
                return 404; #防止有人访问www.sosout.com/blog 看到blog二级域名的页面,只允许访问blog.sosout.com查看
            }
        }
        location /admin {
            if ($domain = "admin.sosout.com") {
                return 404; #防止有人访问www.sosout.com/admin 看到admin二级域名的页面,只允许访问admin.sosout.com查看
            }
        }
            
        error_page  404              /404.html;
    }

    server {
        listen 80;
        server_name  *.sosout.com;
        
        if ($host ~* "^(.*?)\.sosout\.com$") {
            set $domain $1;
        }

        location / {
            if ($domain ~* "blog") {
                root /mnt/html/blog;
            }
            if ($domain ~* "admin") {
                root /mnt/html/admin;
            }
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto  $scheme;
        }
        access_log  /mnt/logs/nginx/access.log  main;
    }
    include /etc/nginx/conf.d/*.conf;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文