Azure 远程服务器上的 nginx 可以与简单的 index.php 配合使用,但不能用于项目

Azure 远程服务器上的 nginx 可以与简单的 index.php 配合使用,但不能用于项目

我正在尝试使用 nginx 在 ubuntu 22.04 LTS azure 远程部署一个项目。

首先我尝试部署一个简单的index.html。效果很好。

然后,我尝试部署一个简单的 index.php。它没有起作用,直到我意识到我需要在服务器上安装 php(在我的情况下,我安装了 8.1 版本)并安装 php8.1-fpm 。然后,我在 /var/www/html 上的简单 index.php 就可以工作了。

然后,我尝试部署我的项目。以下是我遵循的步骤:

  1. 我在 /var/www/html 上克隆了我的 repo。它的名字是 imagenes(一个 laravel repo,其中 index.php 位于文件夹 /public 中)
  2. 我创建了 /etc/nginx/sites-available/imagenes.conf
server{
listen 80;
listen [::]:80;
root /var/www/html/imagenes/public;
index index.html index.html index.php;
server_name myDnsName;
location / {
try_files $uri $uri/ =404;
}
location ~\.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        include fastcgi_params;
}

}
  1. 我执行了
sudo ln -s /etc/nginx/sites-available/imagenes /etc/nginx/sites-enabled/

在 sites-enabled 中复制我的 conf

  1. 我重启了服务器:服务正常
  2. 我使用 sudo nginx -t 测试了语法:语法没有问题

当我转到 Azure 服务器的 DNS 名称时,系统显示页面无法正常工作:HTTP 错误 500

我做错了什么?

答案1

我发现这个 Lavarel 的示例配置可能有帮助

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    root /srv/example.com/public;
 
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
 
    index index.php;
 
    charset utf-8;
 
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
 
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
 
    error_page 404 /index.php;
 
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
 
    location ~ /\.(?!well-known).* {
        deny all;
    }
}

https://laravel.com/docs/10.x/deployment#nginx

你还需要安装这些 php 模块

sudo apt install php-mbstring php-xml php-bcmath

相关内容