De ce dezvoltatorii profesioniști renunță la localhost:3000 în favoarea domeniilor reale
De ce dezvoltatorii profesioniști renunță la localhost:3000 în favoarea domain-urilor reale
Am avut o prezentare internă săptămâna trecută. Am arătat un tool echipei. Reacțiile au venit pe loc. Dar nu despre funcționalități. Toată lumea întreba: "Cât ai dat pe domain-ul ăla?" Unii credeau că l-am cumpărat special pentru demo. Alții se gândeau că au acces VIP prin IP whitelistat.
Realitatea? Zero lei cheltuiți. Totul rula local. Doar că pe www.internaltool.com, nu pe localhost:3002.
Paradoxul dezvoltării moderne
Framework-urile ca Node.js sau Rails au adus servere încorporate. Pornești cu npm start și ai site-ul live pe port 3000. Fără bătăi de cap. Fără configuri complicate.
Dar prețul e mare.
Când ai trei proiecte deschise – pe 3000, 3001, 8080, 5173 – creierul tău devine un map de porturi. Nu mai codezi. Doar memorezi numere. În echipă, haosul explodează.
Cel mai rău? Mediul local nu seamănă cu producția. Aici se ascund bug-urile.
Metoda clasică care nu se demodează
Pe vremuri, dezvoltatorii foloseau domain-uri custom local. Le mapau prin hosts file și proxy-uri. Nu era doar pentru frumusețe. Era un mirror perfect al producției.
Tehnica e simplă: hosts file + reverse proxy ca Nginx. Rulezi proiecte pe dev.proiectul-tau.com, qa.proiectul-tau.com. Totul curat, profesionist.
Rezultatul? URL-uri serioase. Minte limpede. Colaborare ușoară. Mediu local identic cu producția.
Ghid complet: Domain-uri locale custom
Pasul 1: Editează hosts file
Hosts file-ul e DNS-ul tău personal. Adaugi intrări și PC-ul tău rezolvă local, fără internet.
Locații:
- macOS/Linux:
/etc/hosts - Windows:
C:\Windows\System32\Drivers\etc\hosts
Deschide cu sudo/admin. Adaugă:
127.0.0.1 proiectul-meu.com
127.0.0.1 dev.proiectul-meu.com
127.0.0.1 qa.proiectul-meu.com
Browser-ul tău acum trimite totul pe localhost.
Pasul 2: Nginx ca reverse proxy
Browser-ul cere port 80 pentru HTTP. App-ul tău e pe 3000. Nu merge.
Nginx ascultă pe 80 și redirecționează. Creează config în /etc/nginx/sites-available/ (sau echivalent).
server {
listen 80;
server_name proiectul-meu.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name dev.proiectul-meu.com;
location / {
proxy_pass http://localhost:3001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name qa.proiectul-meu.com;
location / {
proxy_pass http://localhost:3002;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Restart Nginx:
# macOS
brew services restart nginx
# Linux
sudo systemctl restart nginx
Gata. Intră pe proiectul-meu.com și accesezi localhost:3000 ca un pro.
Sfat pro: Config WSL2
Pe WSL2, Linux-ul are IP virtual separat. Află-l cu:
wsl hostname -I
Ieșire gen 172.x.x.x. Pune IP-ul ăsta în hosts-ul Windows, nu 127.0.0.1:
172.x.x.x proiectul-meu.com
172.x.x.x dev.proiectul-meu.com
De ce contează cu adevărat
Pare cosmetic. Dar nu e.
Paritate mediu. Localul devine ca producția. Proxy în producție? Ai și local. Bug-urile ies la suprafață devreme.
Comunicare în echipă. Nu zici "vezi pe port 3000". Zici "intra pe dev.tool.com". Clar. Fără erori.
Claritate mentală. Navighezi pe domain-uri ca în real. Fără porturi de memorat.
Mentalitate pro. Te desprinde de "dezvoltatorul casual". Arată că gândești serios la workflow.
Tehnica eternă
Asta se face de ani. A fost uitată pentru comoditate. Dar comoditatea nu e profesionalism.
Investește 20 de minute acum. Vei câștiga ore zilnic. Te concentrezi pe cod bun, nu pe porturi.
Data viitoare, când întreabă de ce nu localhost:3000, răspunde: "Pentru că lucrez ca un profesionist.