如何在Railway中修改Nginx配置解决413请求实体过大问题
解决Railway+Nixpacks部署Laravel的413请求实体过大问题
当使用Nixpacks在Railway部署Laravel应用遇到「413 Request Entity Too Large」错误时,无法直接修改系统默认的/etc/nginx/nginx.conf,可以通过以下两种自定义配置方式解决:
方法一:自定义完整Nginx配置文件
- 在项目根目录创建
.nixpacks.toml文件,指定启动时使用自定义Nginx配置:
[phases.serve] cmds = ["nginx -c nginx.conf"]
- 在项目根目录创建
nginx.conf文件,写入包含client_max_body_size配置的完整Nginx配置,示例如下:
http { client_max_body_size 20M; include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8080; root /app/public; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } } }
- 将这两个文件提交到代码仓库,触发Railway重新部署即可。
方法二:添加Nginx配置片段覆盖参数
- 在项目根目录创建路径
config/nginx/conf.d/,并在其中创建client_max_body_size.conf文件,写入:
client_max_body_size 20M;
- 在项目根目录创建
.nixpacks.toml文件,添加安装阶段的命令,将自定义配置复制到Nginx的配置目录:
[phases.install] cmds = ["mkdir -p /etc/nginx/conf.d && cp config/nginx/conf.d/client_max_body_size.conf /etc/nginx/conf.d/"]
- 提交代码并重新部署,Nginx会自动加载
conf.d目录下的配置,覆盖默认的请求体大小限制。
补充:同步PHP配置限制
除了Nginx的配置,还需要确保PHP的上传参数匹配,在项目根目录创建 .user.ini 文件:
upload_max_filesize = 20M post_max_size = 20M
这样可以避免PHP层面的上传大小限制报错。
内容的提问来源于stack exchange,提问作者Nil Suria
相关产品推荐
相关产品推荐

