Puncte:4

este posibil să alias un număr de port?

drapel us

Vreau să rulez un serviciu pe un port personalizat (de exemplu, jenkins pe 8080) și prefer să îl accesez prin browser cu un nume pe care să-l amintesc, de ex. http://localhost:jenkins care va fi un alias pentru http://localhost:8080

  1. Este posibil așa ceva?
  2. Dacă da, va fi doar un lucru HTTP sau toate protocoalele de rețea vor ști despre acest alias?
  3. De asemenea, dacă (1) este adevărat, această caracteristică este acceptată pe alte sisteme de operare (centos, windows etc.)

Editați | ×:

  1. Care sunt părțile în mișcare din momentul în care introduc adresa până când se rezolvă? Bănuiesc că browserul analizează și, prin urmare, ar putea exista un browser care să accepte cererea mea. După aceea, url-ul analizat este probabil transmis unui proces de sistem de operare care, la rândul său, poate implementa și cererea mea și poate accepta str în loc de un int... Sunt vreuna dintre aceste părți configurabile în așa fel încât să răspundă nevoii mele?
TooTea avatar
drapel cn
Unde ai nevoie de asta pentru a funcționa? Doar pe o mână de mașini sub controlul tău? (Este „localhost” doar un exemplu sau acesta este cu adevărat menit să se aplice doar unei singure mașini?)
drapel cn
WoJ
Dacă decideți să faceți proxy urmând celelalte răspunsuri, încercați Caddy (https://caddyserver.com/), ceea ce face acest lucru foarte ușor.
Aaron F avatar
drapel cn
Puteți încerca [adăugarea unui handler de protocol personalizat](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/registerProtocolHandler#example). S-ar putea să nu funcționeze atât de bine pentru cazul dvs. de utilizare, dar este ceva pe care îl puteți încerca cu ușurință în câteva minute.
chrylis -cautiouslyoptimistic- avatar
drapel er
Conceptul de _porturi binecunoscute_ este important aici.
Puncte:7
drapel vn

Acest lucru poate fi rezolvat cu „proxy inversă” - așa că cercetați puțin acest domeniu.

Nu poate face ceea ce cereți de fapt (alias un număr de port), dar vă poate oferi o altă modalitate de a face o cale ușoară pentru fiecare serviciu (prin redirecționarea înregistrărilor DNS către un anumit IP și port).

Practic, ceea ce tu poate sa face cu un proxy invers este:

  • Asigurați-vă că toate site-urile dvs. prezintă un certificat SSL și (dacă alegeți) aplicați HTTPS în acest caz,
  • Hartă http://localhost:8080 la https://jenkins.local (port forward)
  • Hartă http://localhost/jenkins la https://jenkins.local (locația înainte)

Cele de mai sus funcționează atât cu rezolvarea DNS internă, cât și cu cea externă

Eu personal folosesc Manager proxy Nginx, dar Traefik este, de asemenea, o alegere populară.

Pentru a vă face o idee despre ce să configurați, Nginx Proxy Manager arată astfel:

introduceți descrierea imaginii aici

drapel cn
WoJ
Utilizarea HTTPS nu este o condiție prealabilă pentru inversarea proxy-ului. Este probabil o idee bună, totuși (din mai multe motive, securitatea fiind unul dintre ele - dar YMMV)
Artur Meinild avatar
drapel vn
De acord - dar nu cred că am spus vreodată că este o condiție prealabilă - am dat-o ca exemplu a ceea ce poți face. Cu toate acestea, chiar nu văd niciun motiv în 2021 pentru a nu folosi HTTPS atunci când este posibil, așa că ați putea spune că presupun că majoritatea oamenilor doresc să-l folosească.
drapel cn
WoJ
Ei bine, primul tău punct spune „asigură” și „asigură”. În orice caz, decizia de a folosi sau nu HTTPS este la latitudinea administratorului, am vrut doar să subliniez că nu este ceva ce trebuie să faci. Există o mulțime de cazuri în care este mai ușor (și încă sigur) să utilizați HTTP.
drapel mx
Doar pentru a fi clar, deoarece nu este evident fără a citi celelalte răspunsuri: acest lucru nu face *destul* ceea ce a cerut solicitantul (care trebuia să folosească un nume simbolic pentru un număr de port), dar asta nu este de fapt posibil și acesta este lucrul *cel mai apropiat* care funcționează și rezolvă problema de bază.
Artur Meinild avatar
drapel vn
Sunt de acord. Încercam să dau o soluție problemei de bază, deoarece OP spune: „... și prefer să-l accesez prin browser cu un nume pe care să-l amintesc”. Mi-am editat răspunsul pentru a reflecta acest lucru.
Puncte:4
drapel ng

Din rfc 1738 https://datatracker.ietf.org/doc/html/rfc1738#section-3.1

portul din URL este un număr

port

    Numărul portului la care să vă conectați. Majoritatea schemelor desemnează
    protocoale care au un număr implicit de port. Un alt număr de port
    poate fi opțional furnizat, în zecimală, separat de
    gazdă de către un colon. Dacă portul este omis, două puncte sunt de asemenea.
Puncte:3
drapel us

Este posibil să utilizați soluții precum Nginx, Apache, squid, lighthttpd etc. Rețineți că acestea vă vor mapa portul la orice nume pe care îl dați, dar va fi ceva independent de gazda locală internă. Puteți utiliza acest software în Linux și sisteme bazate pe ferestre.

Iată un exemplu apache.

Ascultați IP_ADDR:80
NameVirtualHost IP_ADDR:80

<VirtualHost IP_ADDR:80>
  ServerNume numele tău.domeniul tău

  ProxyPass / http://localhost:10000/
  ProxyPassReverse / http://localhost:10000/

</VirtualHost>

O altă soluție, dacă doriți să păstrați serverele memorabile, este să oferiți lui Jenkins un IP diferit, rulând-l pe un alt server și apoi mapandu-l în /etc/hosts la fel de 192.168.1.1 Jenkins (Practic adăugați acest lucru în fișier). După ce faceți acest lucru, să spunem că Jenkins dvs. funcționează 192.168.1.1:3000 îl poți accesa prin http://jenkins:3000.

Chiar dacă faceți acest lucru, toate protocoalele de rețea nu vor funcționa, nu veți putea accesa Jenkins folosind https://jenkins:3000.

Sper că acest lucru vă ajută!!

CIsForCookies avatar
drapel us
Am deja aliasuri IP folosind `etc/hosts`, așa că speram la aceeași soluție și pentru porturi :) Mulțumesc!
Guntram Blohm avatar
drapel cn
Există /etc/services, dar browserele în general nu îl folosesc și, chiar dacă ar fi, ar trebui să implementați pe client, nu pe server.
Puncte:0
drapel na

Probabil cea mai simplă soluție este utilizarea redir pentru a redirecționa porturile, de ex. alerga redir :80 127.0.0.1:8080, sau chiar mai bine pune-l în ta inetd.conf. Dacă nu vă place traficul care trece prin risipă printr-un alt proces, același lucru poate fi realizat folosind iptables redirecționare (dar asta este mai multă bătaie de cap).

Adevărata modalitate de a crea un alias ar fi utilizarea a înregistrare SRV în serverul dvs. DNS și asta ar funcționa bine fără costuri generale, dar din cauza istoricului, Înregistrările SRV sunt ignorate pentru protocolul http/https.

drapel cn
Probabil că are deja altceva care rulează pe portul 80, sau nu ar trebui să folosească 8080 pentru asta.
Radovan Garabík avatar
drapel na
@Barmar cine știe... Cred că este mai probabil că este un fel de cadru web pe care îl rulează sub un cont non-root. Dar chiar și așa, această configurare este încă posibilă dacă are mai multe interfețe (cu adrese IP separate) disponibile.
drapel cn
nu răspundeți cu adevărat la întrebare, spuneți că nu trebuie să folosească portul 8080 în primul rând. Întrebarea este doar despre utilizarea unui nume în loc de număr pentru port.
Radovan Garabík avatar
drapel na
@Barmar ai dreptate... Am citit greșit două puncte ca punct. În acest caz, mă tem că nu există o soluție de server pentru cerințele OP (fără proxy invers etc.)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.