New Laravel (Homestead) installation: 502 Bad Gate

2019-03-16 06:55发布

问题:

I tried to setup a local Laravel project. So I decided to use the Homestead vagrant box. After I installed the whole thing like in this Tutorial I was looking forward to see the result in the browser:

The first dispay was a nginx 502 Bad Gateway Error. So I tried to refesh this and after that the default Laravel starting Page was displayed. Then I made some routes and links to some subpages of my site and every time I change my page (via link or typing the get request) i get the "502 Bad Gateway" which disappears after a refresh of the website.

I tried:

  • to change the php version (like here)
  • to make the buffer bigger (like here)
  • completely reinstalled my vagrant and VirtualBox
  • use another Browser
  • use an functional Box of my colleague

Sadly nothing was able to do not display me sometimes the "502 Bad Gateway". But on the Pc of my colleague(Also Windows 10) all things are as you would expect it.

The log file ( /var/log/nginx ) of the site:

2019/01/23 20:23:53 [error] 2532#2532: *1 recv() failed (104: Connection 
reset by peer) while reading response header from upstream, client: 
192.168.10.1, server: eatthis.test, request: "GET / HTTP/1.1", upstream: 
"fastcgi://unix:/var/run/php/php7.3-fpm.sock:", host: "eatthis.test"

2019/01/23 20:24:03 [error] 2532#2532: *1 recv() failed (104: Connection 
reset by peer) while reading response header from upstream, client: 
192.168.10.1, server: eatthis.test, request: "GET / HTTP/1.1", upstream: 
"fastcgi://unix:/var/run/php/php7.3-fpm.sock:", host: "eatthis.test"

And the /etc/nginx/sites-enabled/eatthis.test:

server {
listen 80;
listen 443 ssl http2;
server_name .eatthis.test;
root "/home/vagrant/code/Laravel/public";

index index.html index.htm index.php;

charset utf-8;



location / {
    try_files $uri $uri/ /index.php?$query_string;

}



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/eatthis.test-error.log error;

sendfile off;

client_max_body_size 100m;

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;


    fastcgi_intercept_errors off;
    fastcgi_buffer_size 16k;
    fastcgi_buffers 4 16k;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
}

location ~ /\.ht {
    deny all;
}

ssl_certificate     /etc/nginx/ssl/eatthis.test.crt;
ssl_certificate_key /etc/nginx/ssl/eatthis.test.key;
}

My Homestead.yaml:

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: c:/Users/XXXX/.ssh/id_rsa.pub

keys:
- c:/Users/XXXX/.ssh/id_rsa

folders:
- map: c:/www/code
  to: /home/vagrant/code

sites:
- map: eatthis.test
  to: /home/vagrant/code/Laravel/public

databases:
- homestead

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

# blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar

# zray:
#  If you've already freely registered Z-Ray, you can place the token here.
#     - email: foo@bar.com
#       token: foo
#  Don't forget to ensure that you have 'zray: "true"' for your site.

And my hosts:

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#       127.0.0.1       localhost
#       ::1             localhost
192.168.10.10 eatthis.test

I think there is a problem on my PC or on my vagrant but i don´t know what this could be, because the files are loading after a refresh.

I hope somebody can help me out with this problem. This refreshing all the time is so annoying.

回答1:

Aaron Belz exact steps didn't work for me, but following the link did.

It was xdebug, unfortunately for me too.

sudo vim /etc/php/7.3/mods-available/xdebug.ini

And prefixed all the lines with ; - then followed Aaron's instructions:

sudo service nginx restart
sudo service php7.3-fpm restart

And it worked. Now I'm worried if I need xdebug for anything - I'm not gonna be able to use it until I find the fix. Ah well, cross that bridge when I get there :D

I will also note I'm on Windows, and I know Vagrant sometimes has problems with that so maybe that has something to do with it.



回答2:

Try to disable XDebug. This worked for me but feels sorta hacky. I'll update this if I come up with a better solution.

There should already be an xoff alias in "aliases". So run xoff in your vagrant box, then restart NGINX and PHP7.3-FPM. (If you don't have or want the alias use sudo phpdismod -s cli xdebug in-place of "xoff" where I mention it)

Here's the steps (remember this is done through the homestead box):

  1. xoff
  2. sudo service nginx restart
  3. sudo service php7.3-fpm restart
  4. Try again after a hard reload and pray!

Again I'm not satisfied with this solution yet. However here's how to disable XDbug in a more proper way although I have not tested yet, so let me know how it goes if you try.

Hope this works for you, I spent all night trying to figure this one out lol. As such its 5 am and I'm not even sure if I'm speaking English anymore.