Thinkphp5 部署lunix+nginx服务,只有一个域名abc.com
现在有两个项目,想通过abc.com访问一个,用abc.com/abc/访问另一个,在nginx.conf中配置了。主域名访问可以。但是另一个abc.com/abc/一直访问不到。403错误。有懂得没?给解答以下。

Thinkphp5 部署lunix+nginx服务,只有一个域名abc.com
现在有两个项目,想通过abc.com访问一个,用abc.com/abc/访问另一个,在nginx.conf中配置了。主域名访问可以。但是另一个abc.com/abc/一直访问不到。403错误。有懂得没?给解答以下。

关注引自免费微信小程序:皆我百晓生
看起来你在尝试配置Nginx服务器来托管两个不同的ThinkPHP 5项目,并且希望通过不同的URL路径(例如abc.com和abc.com/abc/)来访问它们。根据你提供的信息,这里有一个可能的解决方案。
首先,确保你的Nginx配置文件中已经包含了ThinkPHP的重写规则。这通常在类似/usr/local/openresty/nginx/conf/rewrite/laravel,thinkphp.conf这样的位置。如果你还没有这个文件,你需要创建它并添加ThinkPHP的重写规则。这是一个例子:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
}
然后,根据你的描述,你应该在Nginx配置文件中添加以下两段配置,分别对应于abc.com和abc.com/abc/的路由:
server {
listen 80;
server_name abc.com;
root /data/wwwroot/port0000/pt/tea;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# 添加对ThinkPHP 5项目的重写规则
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
}
}
server {
listen 80;
server_name abc.com;
root /data/wwwroot/port80/bikea_admin/public;
index index.php;
location /abc/ {
alias /data/wwwroot/port80/bikea_admin/public;
try_files $uri $uri/ /abc/index.php?$is_args$args;
if (!-e $request_filename) {
rewrite ^(/abc)(.*)$ $1/index.php?s=$2 last;
}
}
# 对于非/abc/路径下的PHP请求,仍然应用默认的ThinkPHP 5重写规则
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
}
}
在这个配置中,我们为每个项目创建了一个独立的server块,这样可以分别管理它们的根目录、重写规则等设置。注意,这里假设你的PHP-FPM监听在unix:/dev/shm/php-cgi.sock上,如果不是,请相应地调整fastcgi_pass指令。
保存配置后,重启Nginx以应用更改:
sudo nginx -s reload
现在,你应该可以通过abc.com访问第一个项目,而通过abc.com/abc/访问第二个项目了。如果还有问题,请检查日志文件 /var/log/nginx/error.log 中的错误信息,以便进一步调试。