Konfiguracja VPS oraz otwieranie strony po IP

0

Cześć,
na serwerze mam zainstalowanego nginx-a oraz dockera w którym jest mój projekt w React.
Próbuje uruchomić projekt na vps aby po wpisaniu ip serwera pojawiła się moja strona.
Dodałem taki wpis w configu i wszytko fajnie działa:

server {
	location / {
        proxy_set_header Host $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://172.18.0.5:3080;
    }
}

chciałbym jednak żeby projekt widoczny był pod adres http://ip_serwera/projekt
więc zmieniłem config na taki:

server {
	location /projekt {
        proxy_set_header Host $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://172.18.0.5:3080;
    }
}

taka konfiguracja już nie działa.
W logach widzę takie wpisy:

[18/Dec/2022:10:42:13 +0100] "GET /scripts/bootstrap.min.js HTTP/1.1" 404 134 "http://xx.xx.xx.xx/projekt/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"

Google podpowiada aby dodać "/" w location oraz proxy_pass
ale taka konfiguracja nic u mnie niestety nie zmienia:

server {
	location /projekt/ {
        proxy_set_header Host $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://172.18.0.5:3080/;
    }
}

ktoś ma może jakiś pomysł czemu to nie działa?

0

Cześć,

nigdy nie używałem Nginxa, ale sprawdziłbym jak piszesz kilka rzeczy:

a) Rozumiem, że po zmianie na location /projekt (2 obrazek z kodem) strukturę katalogów na samym serwerze też przeorganizowałeś? Chodzi mi o to, że teraz konfiguracja odnosi się do czegoś czego na przykład nie ma fizycznie.
b) $host - może tutaj jest coś aktualnie źle wpisane po zmianie
c) proxy_pass http://172.18.0.5:3080; - zakładam, że jak dasz znak "/" przed portem to też nie działa? - http://172.18.0.5/:3080;

Dokumentacja: https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

0

@Ryan_1975:
a) nic w strukturze katalogów nie zmieniałem, dla działającego przypadku w document_root: /usr/share/nginx/html jest tylko standardowy index.html "Welcome to nginx!"
b) cały czas w host podaje ip serwera
c) po takiej zmianie w logach mam:
2022/12/18 1248 [error] 148776#148776: *1 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xxx.xxx, server: , request: "GET /project/ HTTP/1.1", upstream: "http://172.18.0.5:80/:3080", host: "xx.xx.xx.xxx"

0

Odnośnie a) utworzyłbyś katalog projekt i skopiował index.html do niego, ale np. zmienił treść na "Welcome to Projekt!"?
Chodzi o to, żeby finalnie było coś takiego w strukturze: /usr/share/nginx/html/projekt/index.html

0
szary88 napisał(a):

@Ryan_1975:
Odnośnie a) utworzyłbyś katalog projekt i skopiował index.html do niego, ale np. zmienił treść na "Welcome to Projekt!"? Chodzi o to, żeby finalnie było coś takiego w strukturze: /usr/share/nginx> /html/projekt/index.html

próbowałem tak zrobić, ale bez zmian, co ciekawe po uruchomieniu w przeglądarce http://xxx.xx.xxx.xxx/projekt/ jest biała strona ale pobiera index.html z projektu react bo w view-source widać kod strony i jest m.in

<link rel="stylesheet" media="screen,projection" href="/styles/cssmap.css"/> 

ale jak chce zobaczyć ten plik css to mam
view-source//xxx.xx.xxx.xxx/styles/cssmap.css

<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.18.0 (Ubuntu)</center>
</body>
</html>
0

A próbowałeś też z nazwą pliku wpisać adres? (adres/projekt/index.html)
Próbuj też z karty prywatnej, albo z innej przeglądarki, bo może Ci coś w cache-u nie odświeżyło.

0

Wg mnie trzeba utworzyć wpis, gdzie będzie określone, na którym nginx ma "słuchać", czyli wpis wyglądałby np tak:

server {
   listen 1.1.1.1:1234;
	
   location / {
                proxy_set_header Host $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://172.18.0.5:3080/;
    	}
}

I wtedy w przeglądarce wpisujesz 1.1.1.1:1234.
Oczywiście adres IP i port do ustawienia własne.

0
areklipno napisał(a):

Wg mnie trzeba utworzyć wpis, gdzie będzie określone, na którym nginx ma "słuchać", czyli wpis wyglądałby np tak:

server {
   listen 1.1.1.1:1234;
	
   location / {
                proxy_set_header Host $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://172.18.0.5:3080/;
    	}
}

I wtedy w przeglądarce wpisujesz 1.1.1.1:1234.
Oczywiście adres IP i port do ustawienia własne.

ta konfiguracja którą wkleiłeś wyżej działa bez listen 1.1.1.1:1234;
tylko wtedy mój projekt jest dostępny po wpisaniu w okno przeglądarki samego ip serwera czyli http://xxx.xx.xxx.xxx i tu nawet portu nie trzeba podawać, wszystko hula
moim celem jest to aby ten projekt był widoczny pod adresem http://xxx.xx.xxx.xxx/projekt

0

Skończyły mi się pomysły, obecnie konfiguracja wygląda tak:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        location /projekt {
                proxy_set_header Host $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://172.18.0.6:3080;
        }
}

po uruchomieniu w przeglądarce adresu http://xxx.xx.xxx.xxx/projekt ładuje plik index.html projektu react który jest w dockerze ale wszystkie odnośniki które są w nim
zdefiniowane już nie działają, np:

<link rel="stylesheet" media="screen,projection" href="/styles/cssmap.css"/>

kiedy chce otworzyć ten plik szuka go pod takim adresem

view-source:http://xxx.xx.xxx.xxx/styles/cssmap.css

i tam go nie znajduje, dostaje

<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.18.0 (Ubuntu)</center>
</body>
</html>

jednak kiedy ten adres ręcznie zmienię na

view-source:http://xxx.xx.xxx.xxx/projekt/styles/cssmap.css

to już plik można podejrzeć.

1

po uruchomieniu w przeglądarce adresu http://xxx.xx.xxx.xxx/projekt ładuje plik index.html projektu react który jest w dockerze ale wszystkie odnośniki które są w nim
zdefiniowane już nie działają, np:

I w tym przypadku nginx działa prawidłowo i nie będzie działać jak założyłeś
.
Bo nginx ma wpisane, że:

http://xxx.xxx.xxx.xxx/styles/cssmap.css

ma szukać w :

        root /var/www/html;

a w katalogu /var/www/html nie ma katalogu styles i pliku cssmap.css .
a tylko

http://xxx.xxx.xxx.xxx/projekty/*

Ma przekierowywać na kontener.

Musisz, albo w nginxie ustawić że location to / i wtedy aplikację masz dostępną pod http://xxx.xxx.xxx.xxx , albo Twój kontener w dockerze, musi używać relative-path: gdzie dasz po prostu styles/cssmap.css lub wszędzie ustawić: /projekt/styles/cssmap.css

1 użytkowników online, w tym zalogowanych: 0, gości: 1