![Azure 远程服务器上的 nginx 可以与简单的 index.php 配合使用,但不能用于项目](https://linux22.com/image/792806/Azure%20%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%20nginx%20%E5%8F%AF%E4%BB%A5%E4%B8%8E%E7%AE%80%E5%8D%95%E7%9A%84%20index.php%20%E9%85%8D%E5%90%88%E4%BD%BF%E7%94%A8%EF%BC%8C%E4%BD%86%E4%B8%8D%E8%83%BD%E7%94%A8%E4%BA%8E%E9%A1%B9%E7%9B%AE.png)
我正在尝试使用 nginx 在 ubuntu 22.04 LTS azure 远程部署一个项目。
首先我尝试部署一个简单的index.html。效果很好。
然后,我尝试部署一个简单的 index.php。它没有起作用,直到我意识到我需要在服务器上安装 php(在我的情况下,我安装了 8.1 版本)并安装 php8.1-fpm 。然后,我在 /var/www/html 上的简单 index.php 就可以工作了。
然后,我尝试部署我的项目。以下是我遵循的步骤:
- 我在 /var/www/html 上克隆了我的 repo。它的名字是 imagenes(一个 laravel repo,其中 index.php 位于文件夹 /public 中)
- 我创建了 /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;
}
}
- 我执行了
sudo ln -s /etc/nginx/sites-available/imagenes /etc/nginx/sites-enabled/
在 sites-enabled 中复制我的 conf
- 我重启了服务器:服务正常
- 我使用 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