hi,
the fact that the status shows 'approved' after a refresh is a classic symptom of a backend timing issue. the approval might have gone through, but the connection is not fully active. the 404 error from front door confirms the link is not working.
first, let's verify the private endpoint connection from the container apps environment side. do not just look at the front door side. go to your container apps environment in the azure portal. in the left menu, look for 'networking' or 'private endpoints'. find the pending private endpoint connection that front door created. even if it looks approved, try to approve it again manually from this side. sometimes this double approval kicks the system into action.
next, check the dns configuration. this is the most common culprit for a 404 after a private link is established. private link requires a specific private dns zone to resolve your container app's name to its private ip address. make sure a private dns zone exists for 'privatelink.azurecontainerapps.io' and that it is linked to your virtual network. it should have an a record that points your container app's hostname to the private ip address assigned by the private endpoint. you can test this by doing an nslookup from a virtual machine inside the same virtual network.
also, look at the container app itself. make sure it is actually running and healthy. if the container app is scaled down to zero or has a failed revision, front door will get a 404 because there is no backend to respond. check the revisions and logs in your container app to confirm it is ready to receive traffic.
this kind of private endpoint delay can happen with any azure service, not just front door and container apps. the approval process can be slow, and the dns propagation is critical. it is always worth checking the dns first.
if you are still stuck, you might need to delete the private endpoint and recreate it. sometimes a fresh start is the fastest solution.
approve the private endpoint from the container apps side, then double and triple check your private dns zone configuration. that is most likely where the problem is hiding.
good luck, my friend. i hope your private link starts behaving after the dns check.
rgds,
Alex