Please help I have 403 Forbidden out of blue!!

Hi,

I have a website and documentation /docs on it that is points to the vercel documentation Nextra website, (I also have a tiny blog on /blog), both suddenly stopped working - showing 403 error, tried to get the information from AI, it says "The issue is that Vercel’s automated security system can be too strict. Because all of your normal visitors are routed through your DigitalOcean server, Vercel only sees your server’s IP address. Even with very low, legitimate traffic, when the security system sees all of those requests coming from just one single server’s IP address, it mistakenly flags it as suspicious. This is a common false positive.

Our support team understands this and wants to help you get this resolved. Please submit the support form below, and our team will work to clear this block for you right away!"

How can I fix this problem? Both my documentation and blog stopped working, and no way to fix it? Thanks!

The domain troubleshooting guide can help with most custom domain configuration issues. You might be able to use that guide to solve it before a human is available to help you. Then you can come back here and share the answer for bonus points.

You can also use v0 to narrow down the possibilities.

This usually happens when Vercel loses the GitHub connection permissions for the repo or branch.

Try:

  • Reconnect GitHub in Vercel settings
  • Check if the repo still has PR permissions enabled
  • Refresh the Git integration
  • Make sure the branch protection rules are not blocking merges

I had something similar before and reconnecting the GitHub app fixed it :+1:

Hi, thanks for your reply. Which permissions should I check? I just made some changes to the repo and it was rebuilt successfully (I mean on the vercel side). The vercel website is showing perfectly, the only problem is on showing the vercel website on my domain.

This sounds more like a domain/DNS or SSL validation problem instead.

I’d check:

  • Whether the domain is pointing to the correct Vercel records
  • If Cloudflare/proxy is disabled temporarily
  • Whether the SSL certificate includes both the root domain and www
  • If the domain is attached to another old Vercel project/team

Sometimes removing the domain completely from Vercel and adding it again fixes the verification sync.

I’m sorry but I’m not a devop, I’m a regular dev that managed to host my tiny websites somehow on vercel years ago, and all what you are saying is not clear for me. I didn’t change anything recently, and it only broke when I updated the code on the doc website (nextra) or maybe earlier - I didn’t check it. SSL is working perfectly for my website, and I don’t know what exactly i should check. the same about this “If Cloudflare/proxy is disabled temporarily” what it means? where to check?
My domain is completely different website hosted on DO (fortunately not here) and I organized this whole thing via reverse proxy and it worked perfectly. I don’t know what could happen, I haven’t touched my settings for ages.

And I think if I remove my websites from vercel i will not able to get them back - everything is sooooo super awful complicated. The docs are outdated and there is no clear documentation at all.

Should I add my domain to the list of domains? I don’t have it now and I don’t remember if I had them before.

You probably don’t need to remove anything yet :+1:Not an expert/devops guy :sweat_smile: but this happened to me a lot before with Vercel + reverse proxy setups.

What usually fixed it for me:

• Go to Project → Settings → Domains
• Make sure the exact domain/subdomain is actually attached there (docs.yoursite.com, blog.yoursite.com, etc.)

Then:
• Redeploy the project once
• If using Cloudflare, temporarily disable the proxy for that subdomain (orange cloud → gray cloud) and test again

For me, many times the problem was:

  • domain verification got weird after deploys
  • or Vercel security/rate-limit falsely blocking the proxy/server IP

Also if the .vercel.app URL works but the custom domain gives 403, that usually confirms it’s more a proxy/domain/security issue than your code itself.

Don’t delete the project yet :+1:
These issues are super frustrating, but usually solvable step by step.

Thanks but this is not applicable to me. I don’t use subdomain, I use the subfolder and proxy on my side. Everything was set up and worked until yesterday when I submitted a small update (or even earlier).
Finally, I was able to fix the problem with editing my nginx config. Here is my post of reddit and solution Reddit - Please wait for verification

Ah okay, now it makes sense. Since you use subfolder + reverse proxy and not a normal Vercel subdomain setup, the usual domain suggestions were probably unrelated :sweat_smile:

Good to know you fixed it from the nginx side. The SNI/TLS thing with:

proxy_ssl_server_name on;

was probably the real issue after Vercel changed something on their edge/security layer.

Thanks for posting the solution too, this will probably help other people using nginx + Vercel behind reverse proxies.

Thank you very much for your help! It’s very frustrating that vercel itself didn’t move a finger to help or announce those changes and tell people how to fix them.

Glad you were able to track it down and share the nginx solution — it’ll probably help a lot of other developers using reverse proxies with Vercel :+1:

Sometimes these proxy/reverse-proxy edge cases are really hard to detect until users start reporting them.