Skip to main content

Troubleshooting

Troubleshooting Common Browser Error

Below is the troubleshooting for common error shown in Browser. For reference, checkout our status page if these instructions told you so.

403 Forbidden

This is tipically not handled by your application and result from configuration error. So, if you see 403 Forbidden generated by NGINX then this could be either:

  • There's no folder in that URL
  • The permission for that folder is incorrect
    • NGINX need to read your folder, they're accessing using nginx user which is added to your group linux user.
    • So, the read byte for group have to enabled. In chmod a 0700 will not work, but 0740 will make it work.
    • Try do chmod g+r -R ~/public_html from SSH if you clueless about this.
  • You're visiting home website or any subfolder (pages ends with /) and there's no handler for it, either it's PHP or Phusion.
    • If your website is handled by PHP, make sure:
      • You have index.php or index.html in root folder.
      • Make sure the filename casing is correct, e.g. index.HTML won't work here.
    • If your website is handled by Passenger Phusion, make sure:
      • you set the root folder correctly (commonly in public_html/public)
      • you've set passenger: in NGINX setting, and it's for parent of root public_html
      • you've set enabled: on in passenger: NGINX config
      • if you're not using GLS (setting with app_start_command) make sure have file app.js, passenger_wsgi.py or config.ru as the startup file in parent of root folder.

404 Not Found

This is tipically handled by your application so nothing should be considered. But if you see 404 Not Found generated by NGINX then this could be either:

  • There's no file in that path.
  • There's no .php or .html file to handle that path.
  • Your file has different filenaming case. e.g. mypict.PNG is different with mypict.png.
  • Your root or location of NGINX setup is incorrect or messed up.

500 Error

This is tipically returned by your application so you should see log files to solve this problem.

Anyway, if you see a blank page with 500 Internal Server Error then you might be quickly confused so here's some tips for you:

  • If your application is PHP:
    • Enable PHP debug. This is mostly preconfigured by your framework (e.g. Laravel's APP_DEBUG) so you need to simply adjust the .env to enable it
      • If you're not using any framework then change .user.ini and wait for 5 minutes before reloading the browser.
  • If your application is handled by Phusion Passenger:
    • Your application really returns 500 Error with no body data. Try change it's environment to debug.
      • Try to add app_env: development to passenger:'s NGINX Config.

502 Bad Gateway

A Bad Gateway error returned from NGINX is potentially a confusing error one. This error means whatever NGINX tries to a proxy connection (either from PHP-FPM or Phusion Passenger), the connection can't be made.

  • Check our status page, if it down it could be our handler dies and you should alert us.
  • If your application is PHP, you might have a broken setup. Try to fix it by changing PHP version back and forth.
  • If your application is handled by Phusion Passenger, the passenger daemon is currently died, maybe because running out of memory. Try to force reload NGINX by changing some config or contact us.
  • You have a long-running PHP script that doesn't return anything within the limit.
    • Passenger phusion app timeout should never having 502 Bad Gateway, instead Incomplete response received from application will returned.

429 Too Many Requests

These might be cause:

  • You've been blocked by NGINX rate limit
    • You've blasted our server with over 500 requests in one moment. Calm down for a moment.
    • You've a page with over 500 media and images. You might have HTTP v2 disabled, enable it back.

Refuse to connect

If you not able to connect to your website with error message like ERR_CONNECTION_REFUSED generated from your browser then these might be cause:

  • You've been blocked by Fail2Ban's rate limit
    • If you recently have failed login to your WordPress or PhpMyAdmin for 10 times. You're definitely blocked from accesing through our NGINX server because of this, so wait for 24 hours or use another internet connection.
    • If you recently have failed login to your SSH or VSCode server for 10 times. You're definitely blocked for using our SSH server because of this, so wait for 24 hours or use WebSSH or use another internet connection.
  • Your work connection or ISP might block from connecting to our server
    • This might also true with our tools like Webmin UI or SSH or Remote Database since they're using custom port.
  • Check our status page, our NGINX service in the server could be died

Incomplete response received from application

This is an error response generated from Phusion Passenger handler, it tells you that your app doesn't return any response (not even HTTP response header) when trying to communicate to your app. These might be the cause:

  • Your app is listening to wrong port. If you use GLS (setting with app_start_command) your app must listen to a port specified by $PORT from that config.
    • Try starting your app with exact config from GLS in SSH to see if your app is actually can listen from given port (specifyng port > 33000 will allow direct connection without from NGINX).
  • Your app is having problems or detecting that the request is problematic and decided to ignore the request instead.
    • You might have an expensive computation and it's exceeding 10 minutes and it's not properly handled
    • Your app is crashing or panic and as the result it's not able to respond to the request
    • Your app is running a bun.js runtime and doesn't apply our bunfix solution

HTTPS Error ERR_CERT_AUTHORITY_INVALID

This means that your SSL certificate has not been set or has expired. Try open Check Connection Tab then push the Install HTTPS Certificate button when prompted.

If you encounter ERR_CERTIFICATE_TRANSPARENCY_REQUIRED after an SSL update, you don't need to panic because of an error due to cache and it will disappear in a few minutes.

Unable to resolve IP Address / DNS error

This is an error generated from your browser with messages like DNS_PROBE_FINISHED_NXDOMAIN.

We have a separate section for fixing DNS issues try to read that page.

CSS or JS or media files are not updated

We currently have a expired cache policy set to max for all CSS/JS/Media files. It is bad idea for your users to need full-cache reload so always use cache-bursting method such as appending with random query parameter. This should already be handled with most frontend bundler.

Troubleshooting Common Server Error

It's common to find that your app works on your machine, but not on ours. Most errors can be solved with educated guess if you can open your log files (always know how to access logs!).

With that in mind, we'll take some common error related with working with our servers.

Connection Refused when connecting to third party API

These things could be the reason:

  • This is commonly caused by our firewall enabled for your website. You can disable it if you're a subscibing account.
  • Your target API is currently down or currently refusing to respond
  • We blocked from accessing this target API. Check our server IP address on SpamHaus or AbuseIPDB, that might be related.

Unable to Connect to Database

These things could be the reason:

  • You haven't enabled mysql or postgres feature via Runner.
  • You have wrong hostname/username/password/dbname set. Always set hostname to localhost. See username and password from manage tab.
    • Try to login with PhpMyAdmin or PhpPgAdmin to check if your website actually able to correct and see the correct database list.

Infinite HTTP Redirection

These things could be the reason:

  • You have enabled DNS proxy to our server and there's misconfiguration there.
    • For example, we often get Infinite redirect with Cloudflare DNS proxy since when it's activated, we'll think you're connecting to our server insecure HTTP and we've set ssl: always to always move you to HTTPS. But, Cloudflare DNS proxy always connect to our server with HTTP even though your website is connecting with HTTPS to Cloudflare DNS proxy.
  • Your app might really has a messed up problem either it's because some bug with Session handling or some other rare cases like caches.

Not Getting Real IP Address

Your requests is handled by NGINX so the requests are proxied.

For PHP, accessing visitor IP client is via $_SERVER['REMOTE_ADDR'] while for Passenger Phusion apps it's accessible via HTTP header X-Forwarded-For or !~Passenger-Client-Address if supported.

Other questions?

Don't hesitate to ask us for guidance! (the contact link is on the bottom on portal page)