Mespi | 2019-10-12 05:00:39 UTC | #1
Słuchajcie intryguje mnie taka mała rzecz. Mianowicie mam dwie usługi na jednej maszyne, które korzystają z portów WWW ( jak nie tak się to nazywa, to raczej wiecie o co chodzi? ).
Chodzi mi o to, że mam zajęte 2 porty: 80 i 8080
Chciałbym, aby port 80 należał do domeny i subdomeny, a port 8080 do innej subdomeny
Na tą chwile i domena, i subdomeny działają na wszystkie porty
http://kresmc.pl
http://kresmc.pl:8080
http://avex.kresmc.pl
http://avex.kresmc.pl:8080
http://warmup.kresmc.pl
http://warmup.kresmc.pl:8080
Czy jest sposób na zablokowanie tego?
Prosił bym o odpowiedzi ;D
Edit: Dodam jeszcze tylko, iż port 80 jest uruchomiony przez apache, a 8080 przez express’a ( https://www.npmjs.com/package/express )
Nieznajomy11 | 2019-10-12 08:16:32 UTC | #2
Możesz postawić nginx na publicznym adresie, a apache2 oraz swoją aplikację w nodejs zbindować na lokalnych portach. Wtedy tylko tworzysz proxy w nginx i gotowe. Możesz z poziomu nginx ustalić jaka domena prowadzi gdzie.
Mespi | 2019-10-12 08:16:29 UTC | #3
Jest jakiś poradnik do tego? Bo nie bawiłem się jeszcze w coś takiego
Nieznajomy11 | 2019-10-12 08:41:17 UTC | #4
Potrzebujesz po prostu znaleźć informacje:
- jak zmienić port adres i port nasłuchiwania apache2 (ustawic w /etc/apache2/ports.conf
dyrektywe Listen 127.0.0.1:80
, zrestartować apache service apache2 restart
)
- jak zmienić port adres i port nasłuchiwania aplikacji nodejs z użyciem express ( app.listen(8080, '127.0.0.1');
- jak zainstalować nginx i stworzyć w nim proxy (instalacja, proxy)
Można zainstalować nginx od razu, ale zalecam zgodnie z artykułem, który podlinkowałem dodać repo, żeby mieć aktualną wersję. W międzyczasie np. była zmiana struktury konfiguracji na inną, dlatego lepiej nie trzymać się już starej i mieć więcej problemów z aktualizacją.
Po instalacji nginx vhosty znajdują się w /etc/nginx/conf.d
. Domyślny zalecam zostawić i skonfigurować go np. tak:
server {
listen IP_VPS:80 default_server;
server_name _;
server_tokens off;
return 444;
}
Dzięki temu połączenia bezpośrednio do ip zostaną odrzucone. Dla konkretnych domen konfiguracja będzie w uproszczonej wersji wyglądać mniej więcej tak:
server {
# Nasluchiwanie
listen IP_VPS:80;
# Domena, mozna podac kolejne po spacji
server_name kresmc.pl;
# Wylaczenie wyswietlania potencjalnie niebezpiecznych informacji w naglowkach (nginx i jego wersja, itp.)
server_tokens off;
# Proxy dla wszystkiego
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:80;
}
# Oddzielne logi dla roznych domen, wygodniejsze
access_log /var/log/nginx/kresmc_access.log;
error_log /var/log/nginx/kresmc_error.log;
}
Mespi | 2019-10-12 08:44:35 UTC | #5
Wielkie dzięki :smiley:
[quote=”Nieznajomy11, post:4, topic:12389”]
server { # Nasluchiwanie listen IPVPS:80; # Domena, mozna podac kolejne po spacji servername kresmc.pl; # Wylaczenie wyswietlania potencjalnie niebezpiecznych informacji w naglowkach (nginx i jego wersja, itp.) servertokens off; # Proxy dla wszystkiego location / { proxysetheader Host $httphost; proxysetheader X-Real-IP $remoteaddr; proxysetheader X-Forwarded-For $proxyaddxforwardedfor; proxysetheader X-Forwarded-Proto $scheme; proxypass http://127.0.0.1:80; } # Oddzielne logi dla roznych domen, wygodniejsze accesslog /var/log/nginx/kresmcaccess.log; errorlog /var/log/nginx/kresmcerror.log; }
[/quote]
W podobny sposób mogę dodać nasłuchiwanie drugiego portu?
Nieznajomy11 | 2019-10-12 08:46:14 UTC | #6
Dokładnie tak, wystarczy zmienić domenę i port w proxy_pass. Ten z listen zostaje 80, chyba że chcesz łączyć się przez inny. Niemniej to raczej wyglądałoby brzydko i nie jest potrzebne.
Mespi | 2019-10-12 09:14:47 UTC | #7
Wszystko działa! Wielkie dzięki!
system | 2019-11-13 09:14:49 UTC | #8
Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.