驻足生活 2024-05-28 17:05 采纳率: 22.2%
浏览 23

thinkphp5 是部署nginx,配置问题不生效;

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

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-28 17:05
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在尝试配置Nginx服务器来托管两个不同的ThinkPHP 5项目,并且希望通过不同的URL路径(例如abc.comabc.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.comabc.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 中的错误信息,以便进一步调试。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月28日