여기에는 운영팀보다 개발팀이 더 많습니다. 상황: Podman을 사용하여 몇 가지 애플리케이션을 실행하는 홈 서버(fedora)가 있습니다. 일부는 데이터베이스 서비스이며 다양한 포트를 사용합니다. NGINX에서 작동할 수 있나요?
- 를 통해 개인 사이트를 호스팅하세요
domain.dev
. 그것은 에 살고 있습니다localhost:8080
. - 를 통해 Fedora 조종석을 호스팅합니다
cocking.domain.dev
. 그것은 에 살고 있습니다localhost:9090
. db.domain.dev:30001
에 있는 다양한 포트를 사용하여 자체 하위 도메인을 통해 다른 애플리케이션을 호스팅합니다localhost:30001
. 총 15개의 포트를 사용한 것 같습니다.
조종석은 할 수 있을 것 같아요 (웹소켓을 사용합니다)
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server localhost:9090;
}
server {
server_name cockpit.domain.dev;
location / {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Origin https://$host;
}
}
location /
도메인에 다른 도메인을 추가할 수 있나요 domain.dev
?
모뎀을 열어 필요한 모든 포트를 전달할 수 있습니다. 가능하다면 나중에 certbot, google 도메인 및 google dns에 대한 후속 질문이 있습니다. 나할 수 없다작동하도록 하세요.
답변1
먼저, nginx는 HTTP 프록시이므로 HTTP(S) 프로토콜을 통해서만 요청을 프록시할 수 있다는 점을 명심하세요.
둘째, OS가 두 개의 서로 다른 응용 프로그램과 프로세스를 동일한 포트에 바인딩하는 것을 허용하지 않으면 다른 포트를 로컬 호스트 포트에 매핑해야 한다고 생각합니다.
아래 구성은 여러분에게 적합할 것으로 예상됩니다(포트 18080을 localhost:8080에 매핑하고 포트 19090을 localhost:9090에 매핑한다는 점에 유의하세요).
server {
listen 18080;
server_name domain.dev;
access_log /var/log/nginx/domain.dev-access.log;
error_log /var/log/nginx/domain.dev-error.log error;
location / {
proxy_pass http://localhost:8080;
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;
}
}
server {
listen 19090;
server_name cockpit.domain.dev;
access_log /var/log/nginx/cockpit.domain.dev-access.log;
error_log /var/log/nginx/cockpit.domain.dev-error.log error;
location / {
proxy_pass http://localhost:9090;
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;
}
}