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

后端 未结 6 922
日久生厌
日久生厌 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:16

    I was in the same situation and I prepared a config file like below to update the default nginx setting that Elastic Beanstalk automatically provides.

    1. Prepare a file (nginx.conf) of your own nginx setting in a Laravel project.
    ~/workspace/your-laravel-app/
    |-- .platform
    |   -- nginx
    |      -- nginx.conf
    |-- other source files
    
    1. Edit your own nginx.conf like below.
    user                    nginx;
    error_log               /var/log/nginx/error.log warn;
    pid                     /var/run/nginx.pid;
    worker_processes        auto;
    worker_rlimit_nofile    32153;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        include       conf.d/*.conf;
    
        map $http_upgrade $connection_upgrade {
            default     "upgrade";
        }
    
        server {
            listen        80 default_server;
            access_log    /var/log/nginx/access.log main;
    
            client_header_timeout 60;
            client_body_timeout   60;
            keepalive_timeout     60;
            gzip                  off;
            gzip_comp_level       4;
            gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    
            # Do not include the Elastic Beanstalk generated locations
            # include conf.d/elasticbeanstalk/*.conf;
    
            # Move Elastic Beanstalk healthd.conf content here
            if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
                set $year $1;
                set $month $2;
                set $day $3;
                set $hour $4;
            }
    
            access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;
    
            # Move Elastic Beanstalk php.conf content here
            root /var/www/html/public;
    
            index index.php index.html index.htm;
    
            # This is an additional configuration
            location / {
                try_files $uri $uri/ /index.php?$query_string;
                gzip_static on;
            }
    
            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. Deploy your change and your new configuration should be loaded.
    $ eb deploy
    

提交回复
热议问题