You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于WSL搭建的LEMP环境网络问题求助(PHP/Composer/NPM)

排查WSL Ubuntu 18.04 LEMP环境自动刷新的net::ERR_INCOMPLETE_CHUNKED_ENCODING问题

结合你描述的场景,我梳理了几个针对性的排查方向,从端口网络、服务配置到WSL特性逐一排查,应该能帮你定位问题:

一、先解决端口切换后的连接问题(定位是否是80端口冲突引发的连锁异常)

你提到改端口到1111就无法连接,大概率是WSL端口转发未生效或Windows防火墙拦截,按以下步骤验证:

  • 先确认WSL内Nginx确实监听了目标端口:
    sudo netstat -tulpn | grep nginx
    
    输出需包含0.0.0.0:1111:::1111,说明监听正常。
  • 配置Windows防火墙允许该端口:
    打开「Windows Defender防火墙」→「高级设置」→「入站规则」→「新建规则」,选择「端口」,输入1111,勾选允许连接,应用到所有网络类型。
  • 区分WSL版本调整访问方式:
    • 如果是WSL1:执行hostname -I获取WSL的IP,用[WSL-IP]:1111访问(WSL1不支持localhost直接转发端口)。
    • 如果是WSL2:偶尔会出现端口转发缓存异常,执行wsl --shutdown重启WSL后再试。

二、修正Nginx缓冲配置(你之前用错了配置项,需针对PHP-FPM调整)

proxy_buffers是给反向代理场景用的,你的应用是通过PHP-FPM运行,要配置fastcgi相关参数:
打开你的Nginx虚拟主机配置文件(比如/etc/nginx/sites-available/your-app.conf),在location ~ \.php$代码块中添加:

fastcgi_buffers 8 1024k;
fastcgi_buffer_size 1024k;
fastcgi_busy_buffers_size 2048k;
fastcgi_temp_file_write_size 2048k;
fastcgi_keep_conn on; # 关键配置:保持长连接避免中途断开

添加后重启Nginx生效:

sudo systemctl restart nginx

三、调整PHP与PHP-FPM的超时、输出缓冲设置

60秒的自动刷新请求可能触发了超时或输出缓冲截断:

  1. 修改PHP.ini配置:
    打开/etc/php/7.1/fpm/php.ini,调整以下参数:
    max_execution_time = 120 ; 设为超过60秒,给自动刷新留足时间
    max_input_time = 120
    output_buffering = Off ; 关闭输出缓冲,避免chunked编码异常
    implicit_flush = On
    
  2. 修改PHP-FPM池配置:
    打开/etc/php/7.1/fpm/pool.d/www.conf,调整:
    request_terminate_timeout = 120s ; 和PHP执行超时保持一致
    pm.process_idle_timeout = 120s
    
  3. 重启PHP-FPM生效:
    sudo systemctl restart php7.1-fpm
    

四、排查WSL版本的网络限制

WSL1的网络栈依赖Windows内核,对长连接、chunked编码的支持不如WSL2稳定:

  • 检查当前WSL版本:
    wsl -l -v
    
  • 如果是WSL1,升级到WSL2:
    打开管理员权限的PowerShell执行:
    wsl --set-version Ubuntu-18.04 2
    
    升级完成后重启WSL,再测试自动刷新功能。

五、临时验证Windows PID4端口占用的影响

虽然你能通过localhost:80访问,但Windows打印服务(PID4)占用80端口可能导致Nginx处理长连接时出现隐性异常:

  • 临时停止打印服务:
    打开管理员权限的PowerShell执行:
    net stop spooler
    
    重启WSL内的Nginx后测试自动刷新,如果恢复正常,说明确实是端口冲突导致的问题,可选择永久禁用打印服务,或固定Nginx到其他端口并配置好转发。

建议你按顺序逐一测试每个步骤,完成后验证自动刷新功能,应该能定位并解决问题。

内容的提问来源于stack exchange,提问作者Nattcrawler

火山引擎 最新活动