Any AWS EB Laravel route getting 404 Not Found nginx/1.16.1

后端 未结 6 920
日久生厌
日久生厌 2020-12-08 22:57

I\'ve just deploy a new laravel 7 application on AWS Elastic beanstalk. I\'ve noticed they changed the Apache server to Nginx server.

https://docs.aws

6条回答
  •  半阙折子戏
    2020-12-08 23:14

    I encountered the same issue, since April 30th 2020 EB is auto configured to nginx instead of apache so the htaccess file no longer works. So when I uploaded my code the front page (index.php) was working but not the api. This is what I did to solve the issue - taken from the AWS developer group: https://forums.aws.amazon.com/thread.jspa?messageID=942914󦍂

    1. SSH into the elastic beanstalk environment (you can generate a keypair in the EC2 instance, this will download a pem (private key file) and then attach the keypair in configurations/security in the elastic beanstalk environment).
    2. In terminal (on mac), navigate to where your private key is stored and use:
        ssh -i "your_private_key_name.pem" ec2-user@your_server
    

    You may get the error message that your PEM is too open in which case use the command:

        chmod 400 your_private_key_name.pem
    
    1. Navigate to the php.conf file using:
        cd /etc/nginx/conf.d/elasticbeanstalk
    
    1. Use this to enter the file:
        sudo nano php.conf
    
    1. This will open the php.conf file which will look
        # This file is managed by Elastic Beanstalk
        #
        # pass the PHP scripts to FastCGI server
        #
        # See conf.d/php-fpm.conf for socket configuration
        #
        root /var/www/html/public;
    
        index index.php index.html index.htm;
    
        location ~ \.(php|phar)(/.*)?$ {
            fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;
    
            fastcgi_intercept_errors on;
            fastcgi_index  index.php;
    
            fastcgi_param  QUERY_STRING       $query_string;
            fastcgi_param  REQUEST_METHOD     $request_method;
            fastcgi_param  CONTENT_TYPE       $content_type;
            fastcgi_param  CONTENT_LENGTH     $content_length;
    
            fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
            fastcgi_param  REQUEST_URI        $request_uri;
            fastcgi_param  DOCUMENT_URI       $document_uri;
            fastcgi_param  DOCUMENT_ROOT      $document_root;
            fastcgi_param  SERVER_PROTOCOL    $server_protocol;
            fastcgi_param  REQUEST_SCHEME     $scheme;
            fastcgi_param  HTTPS              $https if_not_empty;
    
            fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
            fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
    
            fastcgi_param  REMOTE_ADDR        $remote_addr;
            fastcgi_param  REMOTE_PORT        $remote_port;
            fastcgi_param  SERVER_ADDR        $server_addr;
            fastcgi_param  SERVER_PORT        $server_port;
            fastcgi_param  SERVER_NAME        $server_name;
    
            # PHP only, required if PHP was built with --enable-force-cgi-redirect
            fastcgi_param  REDIRECT_STATUS    200;
    
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO $fastcgi_path_info;
            fastcgi_pass   php-fpm;
        }
    
    1. Insert the following into this after index and before location
        location / {
            try_files $uri $uri/ /index.php?$query_string;
                gzip_static on;
        }
    
    1. Save the document

    2. Run this command to restart nginx

    sudo nginx -s reload
    
    1. Exit the environment, you're api should now work

提交回复
热议问题