温馨提示×

怎样用nginx代debian laravel

小樊
47
2026-09-17 10:42:47
栏目: 智能运维

下面按最常见场景给你讲:
在 Debian 上使用 Nginx 反向代理 / 托管 Laravel 项目(PHP-FPM 方式,生产推荐)。


一、环境准备(Debian)

sudo apt update
sudo apt install nginx php php-fpm php-mysql php-mbstring php-xml php-curl unzip git -y

查看 PHP 版本(示例 8.2):

php -v
ls /run/php/
# 通常看到 php8.2-fpm.sock

二、部署 Laravel 项目

假设项目在:

/var/www/laravel
cd /var/www
git clone 你的laravel项目 laravel
cd laravel
composer install
cp .env.example .env
php artisan key:generate

设置权限:

sudo chown -R www-data:www-data /var/www/laravel
sudo chmod -R 755 /var/www/laravel

三、Nginx 配置(重点)

1️⃣ 新建 Nginx 站点配置

sudo nano /etc/nginx/sites-available/laravel

2️⃣ 配置内容(标准 Laravel)

server {
    listen 80;
    server_name example.com;   # 或服务器IP

    root /var/www/laravel/public;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

⚠️ 注意:

  • php8.2-fpm.sock 按你实际 PHP 版本改
  • root 必须指向 public

四、启用站点

sudo ln -s /etc/ngin/sites-available/laravel /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

五、如果 Laravel 在 Docker / 另一端口(反向代理)

如果你的 Laravel 跑在:

  • 127.0.0.1:8000
  • 或 Docker 容器

Nginx 反向代理配置

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        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;
    }
}

六、常见问题

❌ 502 Bad Gateway

  • PHP-FPM 没启动
systemctl status php8.2-fpm

❌ 404 / 路由失效

  • try_files 没写
  • Nginx 没重启

❌ 权限问题

sudo chown -R www-data:www-data storage bootstrap/cache

七、HTTPS(可选但推荐)

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx

如果你愿意,可以告诉我:

  • Laravel 是否用 Docker
  • 是否是 本地开发 / 服务器
  • 是否要 多站点 / 子域名

我可以直接给你一份完整可用的配置。

0 踩