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

Nginx部署PHP API时返回无效Content-Type数据类型头问题求助

配置存在的核心问题

    1. /API路径的转发目标错误:你当前location /API块内的try_files规则会将请求转发到站点根目录的/index.php,而非你预期的/API/index.php,请求未进入Nette框架的API处理逻辑,导致返回内容和响应头异常。
    1. 未兼容小写/api路径匹配:当前仅配置了大写/API的前缀匹配,小写/api开头的请求会直接走根路径的规则,无法进入API处理逻辑。
    1. 根路径规则适配错误(针对React静态资源托管):你当前根路径的try_files回退到/index.php,如果根目录存放React打包后的静态资源,该规则会导致React前端路由失效,应该回退到index.html。
    1. PHP处理规则无目录限制:全局的.php匹配规则允许站点任意目录下的PHP文件被执行,存在安全风险,建议将API目录下的PHP处理规则收敛到API的location块内。

修正后的完整配置

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name domain.tld *.domain.tld username.tld *.username.cz;
    # redirect other domains to main
    if ($host != 'domain.tld') {
        return 301 https://domain.tld$request_uri;
    }
    
    root /home/username/www/domain.tld/www;
    index index.html index.htm index.php; # 调整优先级,优先匹配静态资源入口
 
    # 根路径适配React单页应用
    location / {
        try_files $uri $uri/ /index.html;
    }

    # 大小写不敏感匹配所有/api开头的请求
    location ~* ^/api {
        try_files $uri $uri/ /API/index.php$is_args$args;
        # 仅允许API目录下的PHP文件执行
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        }
    }

    # 如果你根目录确实有需要执行的PHP文件,可以保留这个块,否则可以删除
    # location ~ \.php$ {
    #     include snippets/fastcgi-php.conf;
    #     fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    # }

    ssl_certificate /etc/letsencrypt/live/domain.tld/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain.tld/privkey.pem; # managed by Certbot
}

生效操作

修改配置后先执行nginx -t验证配置语法是否正确,确认无报错后执行systemctl reload nginx重载配置即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:36:02