You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx配置Tomcat站点下WordPress子目录遇错求助

解决Nginx配置Tomcat站点下/blog PHP博客的"No input file specified"问题

我帮你梳理下问题根源和解决办法——你现在的核心问题是既没正确处理Tomcat主站的请求转发,又因为PHP脚本路径指向错误导致了"No input file specified"报错,咱们一步步来修复:

错误原因拆解

"No input file specified"本质是PHP-FPM找不到你指定的脚本文件,结合你的配置来看:

  • 你把root设为/var/www/html,但博客文件大概率不在这个主站目录里,导致$document_root$fastcgi_script_name拼接出来的路径根本不存在
  • 当前配置完全没处理Tomcat主站的请求,所有非/blog的请求都会走Nginx静态文件查找,这肯定会出问题

完整解决方案

假设你的PHP博客文件实际存放在/var/www/blog目录,Tomcat运行在本地8080端口(默认Tomcat端口),请替换成下面的Nginx配置:

server {
    listen 80;
    server_name example.com; # 替换成你的实际域名或IP

    # 处理主站所有非/blog的请求,转发到Tomcat
    location / {
        proxy_pass http://localhost:8080;
        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;
    }

    # 处理/blog路径的PHP博客请求
    location /blog {
        root /var/www; # 这里是/blog的上级目录,因为$uri会包含/blog前缀
        index index.php;

        try_files $uri $uri/ /blog/index.php?$args;

        # 单独处理/blog下的PHP脚本,避免和全局规则冲突
        location ~ ^/blog/.+\.php$ {
            fastcgi_split_path_info ^(/blog/.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php7.2-fpm.sock;
            fastcgi_index index.php;
            # 拼接后路径为/var/www/blog/xxx.php,PHP-FPM能正确找到文件
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }

    # 错误页面配置
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html; # 用Nginx默认错误页面目录更稳妥
    }
}

关键配置说明

  1. 主站转发规则:location /把所有非/blog的请求转发到Tomcat,确保主站正常访问
  2. 博客路径修正:location /blog的root设为/var/www,这样拼接出来的脚本路径正好对应你的博客文件目录
  3. 独立PHP规则:给/blog下的PHP单独配置location,避免和全局PHP规则(如果有的话)冲突,同时保证路径拆分逻辑正确

后续验证步骤

  1. 确保博客目录权限正确,让Nginx和PHP-FPM能访问:
    chown -R www-data:www-data /var/www/blog
    chmod -R 755 /var/www/blog
    
  2. 测试Nginx配置合法性:
    nginx -t
    
  3. 重启服务生效:
    systemctl restart nginx
    systemctl restart php7.2-fpm
    

这样配置后,访问example.com会打开Tomcat主站,访问example.com/blog就能正常加载PHP博客了。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:47:57