在 ubuntu 20.04 上安装了 nginx 服务器。目标是确保发送到 localhost/tunnel/ 的所有内容都发送到位于 /var/www/tunnel/index.php 的 index.php 文件
另外,如果请求发送到 localhost/,那么所有内容都会重定向到 localhost:8080
第二个就没有问题了。一切都被重定向。但是1m就出现问题了。
出现错误 403。同时,对隧道文件夹及其所有内容的访问权限为 777。
nginx 设置
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
}
location /tonnel {
alias /var/www/tonnel; #Используем alias для указания пути к файлам
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
}
文件夹权限截图
代码index.php
<?php
$mysqli = new mysqli("localhost", "root", "root", "Tonnel");
$connection = $mysqli->connect("localhost", "root", "root", "Tonnel");
if ($connection) {
print("Wow");
}
else {
print("bad");
}
所以,可能会有很多问题,这里有近似的解决方案。确保 Nginx 用户和组(通常是 www-data)对 /var/www/tunnel 目录及其所有子目录和文件具有读取权限。从安全角度来看,使用 777 是不好的做法。
在位置块中使用别名而不是根有时会导致问题。使用 root 的配置将是这样的:
设置 PHP 文件的位置块以包含 /tunnel。如果不这样做,nginx将无法处理/tunnel目录中的PHP文件。
要准确找出 403 错误的原因,请检查 nginx 错误日志,该日志通常位于 /var/log/nginx/error.log 中。他们可能会提供更具体的线索来说明到底是什么导致了问题。好吧,或者如果您使用 laravel,请检查 laravel.log
尝试重启nginx
sudo systemctl 重新启动 nginx
我不太明白为什么,但出于某种原因我不喜欢你的 nginx 配置。
这是我的 Laravel 项目的配置。请注意,我没有像您那样描述index.php,我将它放在公共目录中。
我也尝试在家里做同样的事情。令人惊讶的是,家里一切都很顺利。这次我按照文章的建议做了一切。我的设置几乎不需要改变。您所要做的就是添加索引和根。
此后错误消失。