tp6 + swoole 的nginx配置

本文介绍如何在ThinkPHP 6中启用Swoole扩展并进行相关配置,包括关闭Xdebug、设置监听端口及模式等。同时提供Nginx反向代理配置示例。

 php 开启swoole扩展  xdebug扩展必须关闭

安装think-swoole扩展
        composer require topthink/think-swoole

修改配置文件 tp6中 config/swoole.conf

        其中host为0.0.0.0

        port为20111(自行设置)

'server'     => [
        'host'      => env('SWOOLE_HOST', '0.0.0.0'), // 监听地址
        'port'      => env('SWOOLE_PORT', 20111), // 监听端口
        'mode'      => SWOOLE_PROCESS, // 运行模式 默认为SWOOLE_PROCESS
        'sock_type' => SWOOLE_SOCK_TCP, // sock type 默认为SWOOLE_SOCK_TCP
        'options'   => [
            'pid_file'              => runtime_path() . 'swoole.pid',
            'log_file'              => runtime_path() . 'swoole.log',
            'daemonize'             => true, //守护进程
            // Normally this value should be 1~4 times larger according to your cpu cores.
            'reactor_num'           => swoole_cpu_num(),
            'worker_num'            => swoole_cpu_num(),
            'task_worker_num'       => swoole_cpu_num(),
            'task_enable_coroutine' => true,
            'task_max_request'      => 2000,//设置 task 进程的最大任务数
            'enable_static_handler' => true,
            'document_root'         => root_path('public'),
            'package_max_length'    => 20 * 1024 * 1024,
            'buffer_output_size'    => 10 * 1024 * 1024,
            'socket_buffer_size'    => 128 * 1024 * 1024,
        ],
    ],

nginx反向代理配置 其中host 需和tp swoole.conf中的host一致

location ~* \.(gif|png|jpg|css|js|woff|woff2)$
{
    proxy_pass http://127.0.0.1:20111;
    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 REMOTE-HOST $remote_addr;
    expires 12h;
}

location /
{
    proxy_pass http://127.0.0.1:20111;
    proxy_http_version 1.1;
    proxy_read_timeout 360s;
    proxy_redirect off;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    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 REMOTE-HOST $remote_addr;

    add_header X-Cache $upstream_cache_status;

    #Set Nginx Cache

       add_header Cache-Control no-cache;
    expires 12h;
}

<think>好的,我现在要帮助用户解决在ThinkPHP 6.0中使用Swoole搭建HTTP服务器后,如何正确配置Nginx的问题。首先,我需要回顾用户提供的引用内容,确保回答准确。 根据引用[1]和[2],用户已经成功启动了Swoole HTTP服务器,运行在8080端口,并且知道Swoole是常驻进程,与传统Nginx/Apache每次请求重新加载不同。因此,Nginx需要反向代理到Swoole的端口。 接下来,用户可能希望将外部请求通过Nginx转发到Swoole服务,这样可以利用Nginx处理静态资源、SSL等,而动态请求由Swoole处理。引用[4]提到了Nginx配置优化,比如使用epoll、worker_connections等,这可能在高并发场景下有用。 现在需要构造一个Nginx配置示例。通常,配置反向代理需要设置upstream或者直接proxy_pass到本地端口。由于Swoole运行在127.0.0.1:8080,Nginx需要将请求转发到这里。同时,静态文件应由Nginx直接处理,避免经过Swoole,提升性能。 参考引用[2]中的信息,由于Swoole是常驻进程,可能需要处理应用初始化的问题,但配置Nginx本身不需要考虑这点,只需正确转发请求即可。此外,引用[3]和[4]提到的优化参数可能需要包含在配置中,比如worker_connections和epoll模型。 需要注意的配置点包括:设置proxy_http_version为1.1,以便支持长连接;传递必要的头信息,如Host和客户端真实IP;处理WebSocket可能需要额外的配置,但用户的问题主要针对HTTP服务器,所以可能不需要这部分。 然后,检查用户是否需要SSL配置,但问题中没有提到,所以可能暂时省略。最后,确保配置语法正确,并提醒用户测试和重载Nginx。 可能还需要考虑路径问题,比如ThinkPHP的public目录作为根目录,确保静态文件路径正确。同时,防止直接访问Swoole端口,应配置防火墙。 总结步骤:创建Nginx配置文件,设置监听端口,server_name,静态文件处理,动态请求代理到Swoole,加入性能优化参数,检查配置并重启服务。</think>以下是在ThinkPHP 6.0中使用Swoole搭建HTTP服务器后,配置Nginx的详细步骤: ### 一、基础配置原理 需要将Nginx作为反向代理,将请求转发到Swoole HTTP服务端(默认端口8080)。动态请求通过$proxy_pass$转发,静态资源由Nginx直接处理以提高性能[^2][^4]。 ### 二、Nginx配置示例 ```nginx worker_processes auto; worker_rlimit_nofile 51200; # 文件描述符限制优化[^4] events { use epoll; # 高性能事件模型 worker_connections 1000000; # 连接数优化 multi_accept on; } http { server { listen 80; server_name yourdomain.com; root /path/to/tp6/public; # 指向ThinkPHP入口目录 # 静态资源处理 location ~* \.(js|css|png|jpg|gif|ico|woff2|svg)$ { expires 7d; access_log off; } # 动态请求代理 location / { proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8080; # 指向Swoole服务端口 } } } ``` ### 三、关键配置说明 1. **静态资源分离** Nginx直接处理静态文件请求,避免消耗Swoole进程资源,通过$location$规则匹配常见静态文件后缀[^4] 2. **长连接配置** 通过$proxy_http_version 1.1$启用HTTP1.1协议支持,配合Swoole保持连接复用 3. **头部信息传递** 必须设置$Host$和$X-Real-IP$等头部,确保ThinkPHP能获取正确的客户端信息 4. **性能优化参数** - $worker_rlimit_nofile$提升文件描述符上限 - $use epoll$使用高效事件驱动模型 - $multi_accept on$启用批量接收新连接 ### 四、验证配置 ```bash nginx -t # 检查配置语法 systemctl reload nginx # 重载配置 ``` ### 五、防火墙配置 ```bash firewall-cmd --permanent --add-port=80/tcp # 开放HTTP端口 firewall-cmd --reload ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值