我有一个旧项目,现在需要新的功能,我打算使用laravel来提供它,一切都在工作正常的xampp与Apache,但我的服务器con nginx显示我访问被拒绝的消息,无法访问我的路由,应该如何是我的网站配置应该是如果laravel安装在mysite.com/2015我的网站配置如下,什么showld我改变?我已经尝试
location /newsection/ {
try_files $uri $uri/ /newsection/public/index.php$request_uri;
}
但它会导致500错误
server {
listen 80;
server_name am2.aminversiones.com;
root /home/forge/am2.aminversiones.com;
# FORGE SSL (DO NOT REMOVE!)
# ssl_certificate;
# ssl_certificate_key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
index index.html index.htm index.php;
charset utf-8;
client_max_body_size 300M;
location / {
#try_files $uri $uri/ /index.php?$query_string;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/am2.aminversiones.com-error.log error;
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Remove trailing slash to please routing system.
if (!-d $request_filename) {
rewrite ^/(.+)/$ /$1 permanent;
}
# version 1
location ^~ /2015 {
alias /home/forge/am2.aminversiones.com/2015/public;
try_files $uri $uri/ @2015;
location ~* \.php {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/fastcgi_params;
}
}
location @2015 {
rewrite ^/2015/(.*)$ /2015/index.php/$1 last; # THIS IS THE IMPORTANT LINE
}
# end version 1
# version 2
# this is with `ln -s /home/tom/public_html/demos/demo1/public <document root>/demo1`
location ~ /2015 {
try_files /2015/$uri /2015/$uri/ /2015/index.php?q=$uri&$args;
}
# end version 2
# PHP FPM configuration.
location ~* \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
include /etc/nginx/fastcgi_params;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# We don't need .ht files with nginx.
location ~ /\.ht {
deny all;
}
}
9条答案
按热度按时间3duebb1j1#
好吧,我找到了一个解决方案,可以非常容易地在nginx服务器的子目录中配置和安装Laravel,在/etc/nginx/sites-available/yourSite配置文件中,添加以下内容:
瞧,你的路线将正常工作,他们应该如何。
aiazj4mn2#
在我花了几个小时在这个问题上之后,最后我用一个子域地址解决了我的问题,如下所示:
如果你想把你的
laravel
项目放到一个ngnix-ubuntu 16-php.7.2
服务器上的subfolder
中,那么下面是ngnix配置:1.你的嵌套(子文件夹)不在你的主文件夹内
/var/网址/主目录:/var/www/嵌套:
则您的配置应为:
1.主文件夹中的laravel-test文件夹(子文件夹):
/var/网址/主目录:/var/www/主目录/嵌套目录:
则您的配置应为:
uhry853o3#
这是解决我的别名问题的变通方法,Nginx不像使用root指令那样查找/var/www/portal/public/portal/foo中的文件
其他参考可从本文https://gist.github.com/tsolar/8d45ed05bcff8eb75404中找到
ht4b089n4#
出于某种原因,别名导致了这个问题,并且不起作用。因此,也许这会帮助其他人,所以下面是我为使这个问题起作用所做的工作。正如你所看到的,我去掉了“别名”,并将laravel/public添加到等式中。
xv8emn3q5#
它对我不起作用,所以我得到了另一个解决方案。
1.我创建了一个“普通”的laravel域,指向http://generic.laravel根目录/my/laravel/path/public
1.之后,我在真实的域上创建了一个位置来代理我的通用Laravel:
}
1.不幸的是,Laravel将使用url http://generic.laravel来创建链接。您可以按照以下步骤Laravel: Change base URL?来解决它
oprakyz76#
我遇到过几个类似错误403或404的情况,我认为这个方法是有效的.不要忘记根据你在服务器上的php版本(
php8.1-fpm.sock
)来修改php版本.注意your_domain www.your_domain
是基于你的网站.配置后,不要忘记添加这个到你的符号链接,然后
systemctl restart nginx
。我敢肯定,为Laravel 8和9仍然工作,因为我最近刚刚测试的子文件夹中的Laravel 9项目和工程罚款。wwtsj6pe7#
在server指令的root参数中指定公共文件夹
在文件
/etc/nginx/sites-available/am2.aminversiones.com
中重新启动nginx服务:
sudo systemctl restart nginx
jtjikinw8#
地点/文具{别名/var/www/html/文具/公共场所;尝试文件$uri $uri/@信纸;位置~. php ${包含代码段/fastcgi-php. conf;文件名:/run/php/php7.2-fpm. sock;快速cgi参数脚本文件名$请求文件名;}}
位置@信纸{重写/信纸/(. *)$/信纸/index.php?/最后;}
tkqqtvp19#
请用这个:
}