I had no end of problems setting up my local development environment. I have a Windows 10 client and have Apache on a CentOS 7 computer. To expand upon what jlrdw said, I will explain my set up. Of course, it is likely to be different for you, but might give you some guidance.
At the end of my Apache configuration file (httpd.conf), I have an entry:
#####
# Optional Includes here for Virtual Hosts
####
IncludeOptional /etc/httpd/conf/vhosts/*.conf
There is a vhosts subfolder in the folder that has httpd.conf and, in that, I have separate files, one for each laravel site I am running. I name them according to the site and the port I use to access it, such as mysite_8090.conf. This file contains:
# IPv4 only
Listen 0.0.0.0:8090
<VirtualHost *:8090>
DocumentRoot "/full/path/to/mysite/public"
ServerName mysite.test
<Directory "/full/path/to/mysite/public">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
If I add another Laravel site, I copy mysite_8090.conf and rename it, changing the contents to reflect a different port, DocumentRoot
and Directory. Don't forget to restart your httpd if you add another config file.
Finally, in my Windows 10 client, I update my hosts file, adding an entry which points mysite.test (the ServerName in my config file) to the (static) IP address of my CentOS 7 computer. In order to access my Laravel site, I use http://mysite.test:8090 and it goes to the usual landing page showing the familiar Laravel information. There is no sign of /public/ in the URI.
As I said, this is to give guidance and indicate what works for me. There are several examples for setting up Apache VirtualHosts here: https://httpd.apache.org/docs/2.4/vhosts/examples.html. I don't have any experience of Nginx but suspect it will have a similar configuration. I think they are called Server Blocks, rather than VirtualHosts.