Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Administrator
geumdo_docs
Commits
2d8ab85d
Commit
2d8ab85d
authored
Jun 11, 2025
by
Administrator
Browse files
Upload New File
parent
8670986e
Changes
1
Show whitespace changes
Inline
Side-by-side
nginx_proxy_analysis.md
0 → 100644
View file @
2d8ab85d
# Nginx 프록시 설정 분석 (완성본)
이 문서는 제공된 Nginx 설정 파일을 바탕으로 현재 구성된 프록시 서버의 구조와 주요 설정을 설명합니다. 개발자들이 애플리케이션 배포 및 트러블슈팅 시 참고할 수 있도록 작성되었습니다.
## 1. 개요
현재 Nginx 설정은 메인 설정 파일인
`/etc/nginx/nginx.conf`
와 가상 호스트 설정 파일들이 위치하는
`/etc/nginx/sites-enabled/`
디렉토리의 조합으로 구성되어 있습니다.
-
**`nginx.conf`**
: Nginx 프로세스의 동작 방식, 로그 형식, SSL/TLS 기본 설정 등 전역적인 설정을 담당합니다.
-
**`/etc/nginx/sites-enabled/`**
: 각 도메인 또는 서비스에 대한 구체적인 프록시 규칙, 서버 블록(
`server { ... }`
)을 정의합니다.
`nginx.conf`
에서 이 디렉토리의 모든 파일을
`include`
하여 설정을 불러옵니다.
## 2. 메인 설정 분석 (`/etc/nginx/nginx.conf`)
`nginx.conf`
파일의 주요 설정은 다음과 같습니다.
-
**`user gds;`**
: Nginx 워커 프로세스가
`gds`
사용자 권한으로 실행됩니다. (기본값:
`www-data`
)
-
**`worker_processes auto;`**
: 서버의 CPU 코어 수에 맞춰 워커 프로세스 수가 자동으로 조절됩니다.
-
**`worker_connections 8092;`**
: 각 워커 프로세스는 최대 8092개의 동시 연결을 처리할 수 있습니다.
-
**`client_max_body_size 300M;`**
: 클라이언트가 요청 시 보낼 수 있는 본문(body)의 최대 크기를 300MB로 설정하여 대용량 파일 업로드를 허용합니다.
-
**`proxy_*_timeout 1800;`**
: 프록시 관련 타임아웃이 1800초(30분)로 길게 설정되어 있어, 오래 걸리는 백엔드 작업에 대응할 수 있습니다.
-
**`log_format custom_log ...`**
: 커스텀 로그 형식을 정의하여 더 상세한 정보를 기록합니다.
-
**`gzip on;`**
: 응답을 압축하여 전송함으로써 네트워크 대역폭을 절약합니다.
-
**`ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;`**
: 보안을 위해 TLS 1.0 이상의 프로토콜만 사용하도록 설정되어 있습니다.
-
**`include /etc/nginx/sites-enabled/*;`**
:
`sites-enabled`
디렉토리 내의 모든 설정 파일을 불러와 가상 호스트로 사용합니다.
## 3. 가상 호스트 분석 (`/etc/nginx/sites-enabled/`)
`sites-enabled`
디렉토리의 설정 파일을 분석하여 서비스 유형별로 분류했습니다.
### 3.1. 리버스 프록시 (Reverse Proxy) 목록
Nginx가 백엔드 애플리케이션 서버로 요청을 전달하는 리버스 프록시 목록입니다.
| 설정 파일 | 도메인 (server_name) | 프록시 대상 (proxy_pass) | 비고 |
| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ---------------------------------------- |
|
`3dp_nextcloud.conf`
|
`3dp-nextcloud.geumdo.net`
|
`http://192.168.0.235`
| |
|
`ai_was.conf`
|
`gdlab.co.kr www.gdlab.co.kr`
|
`https://192.168.0.166:4333`
| SSL 적용 |
|
`fastapi.conf`
|
`fastapi.geumdo.net`
|
`http://192.168.0.166:8000`
| |
|
`fastapi_new.conf`
|
`fastapi-new.geumdo.net`
|
`http://192.168.0.166:8001`
| |
|
`flask_proxy.conf`
|
`proxy.geumdo.net`
|
`https://192.168.0.166:3001`
| SSL 적용 (Certbot) |
|
`flaskapi.conf`
|
`flaskapi.geumdo.net`
|
`http://192.168.0.236:3000`
| |
|
`g3d-test.conf`
|
`g3d-test.geumdo.net`
|
`http://192.168.0.235:8090`
| |
|
`gbax.conf`
|
`gbmax.or.kr`
|
`http://192.168.0.236:8092`
| SSL 적용,
`www`
서브도메인 리다이렉트 |
|
`geumdo_desktop_docker.conf`
|
`g3d.geumdo.net`
|
`http://192.168.0.11:8091`
| |
|
`geumdo_desktop_docker.conf`
|
`geumdo.net www.geumdo.net`
|
`https://192.168.0.11:4445`
| SSL 적용, HTTP to HTTPS 리다이렉트 |
|
`geumdo_java.conf`
|
`gbtp.geumdo.net`
,
`ems.geumdo.net`
,
`gds-ems.geumdo.net`
,
`meeting.geumdo.net`
,
`auth.geumdo.net`
,
`hub.geumdo.net`
,
`dgse.geumdo.net`
,
`survey.geumdo.net`
,
`assign.geumdo.net`
,
`lms.ictcog.geumdo.net`
,
`recruit-cc.geumdo.net`
,
`report.geumdo.net`
,
`dmi-recruit.geumdo.net`
,
`play.geumdo.net`
,
`gbsos.geumdo.net`
|
`http://localhost:8083`
| 여러 도메인을 하나의 백엔드로 연결 |
|
`geumdo_java.conf`
| (위와 동일) |
`http://localhost:3690`
|
`/svn`
경로 요청은 SVN 서버로 프록시 |
|
`geumdo_java_upgrade.conf`
|
`dip-zero.geumdo.net`
|
`https://192.168.0.166:4444`
| SSL 적용 (Certbot) |
|
`geumdo_java_upgrade_http.conf`
|
`max.geumdo.net`
,
`gbmax.geumdo.net`
,
`mobility.geumdo.net`
,
`eval-new.geumdo.net`
,
`vnexa.geumdo.net`
|
`http://192.168.0.166:8093`
| 여러 도메인을 하나의 백엔드로 연결 |
|
`geumdo_ollama_docker.conf`
|
`ollama.geumdo.net`
|
`http://192.168.0.166:11434`
| |
|
`geumdo_ollamaui_docker.conf`
|
`ollamaui.geumdo.net`
|
`http://192.168.0.70:9000`
| |
|
`geumdo_posivibes.conf`
|
`posivibes.geumdo.net`
|
`http://localhost:8084`
| |
|
`geumdo_registry.conf`
|
`118.45.160.139`
|
`http://localhost:5001`
| Docker Registry 프록시 |
|
`gitlab.conf`
|
`gitlab.geumdo.net`
|
`http://gitlab.geumdo.net:8081`
| |
|
`iptime.conf`
|
`setting.geumdo.net`
|
`http://192.168.0.1:80`
| 공유기 설정 페이지 프록시 |
|
`jobttp.conf`
|
`tech.jobttp.geumdo.net`
,
`biz.jobttp.geumdo.net`
, 등 다수 |
`http://localhost:8084`
| 여러 서브도메인을 하나의 백엔드로 연결 |
|
`jupyter.conf`
|
`jupyter.geumdo.net`
|
`http://jupyter.geumdo.net:8888`
| WebSocket 지원 |
|
`jupyter_gpu.conf`
|
`jupyter-gpu.geumdo.net`
|
`http://192.168.0.70:8888`
| WebSocket 지원 |
|
`jupyter_gpu2.conf`
|
`jupyter-gpu2.geumdo.net`
|
`http://192.168.0.71:8888`
| WebSocket 지원 |
|
`msis.conf`
|
`msis.kr`
|
`http://192.168.0.3:3000`
| |
|
`nas.conf`
|
`nas.geumdo.net`
|
`http://192.168.0.16:5000`
| Synology NAS 프록시 |
|
`posteio.conf`
|
`mail.geumdo.net`
|
`https://mail.geumdo.net:4433`
| SSL 적용 (Certbot) |
|
`prusa1.conf`
|
`prusa1.geumdo.net`
|
`http://192.168.0.43`
| 3D 프린터 프록시 |
|
`rvtouch3d-api.conf`
|
`rvtouch3d-api.geumdo.net`
|
`http://192.168.0.70:8001`
| Prometheus, Grafana 경로 분기 |
|
`rvtouch3d-front-test.conf`
|
`rvtouch3d-test.geumdo.net`
|
`http://192.168.0.70:3002`
| |
|
`sw3d-dev.conf`
|
`sw3d-dev.geumdo.net`
|
`http://192.168.0.235:8080`
| |
|
`tpeap.conf`
|
`wifi.dgei.or.kr`
|
`http://192.168.0.61:38088`
| |
|
`vnexa_api.conf`
|
`vnexa-api.geumdo.net`
|
`http://192.168.0.70:8000`
| SSE 지원 |
|
`ynax.conf`
|
`max.or.kr`
|
`http://192.168.0.236:8092`
| SSL 적용,
`www`
서브도메인 리다이렉트 |
### 3.2. PHP-FPM 연동 사이트 목록
Nginx가 직접 PHP 코드를 실행하기 위해 PHP-FPM(FastCGI Process Manager)으로 요청을 넘기는 사이트 목록입니다. PHP 버전에 따라 분류되었습니다.
#### PHP 7.4-FPM (`unix:/var/run/php/php7.4-fpm.sock`)
| 설정 파일 | 도메인 (server_name) | 웹 루트 (root) |
| --------------------- | ----------------------------- | ------------------------------- |
|
`aifor.conf`
|
`aifor.geumdo.net`
|
`/webFolder/aifor/public`
|
|
`boardtest.conf`
|
`boardtest.geumdo.net`
|
`/webFolder/boardtest/public`
|
|
`choi.conf`
|
`choi.geumdo.net`
|
`/webFolder/choi/public`
|
|
`ckeditor.conf`
|
`ck.geumdo.net`
|
`/webFolder/ckeditor`
|
|
`com.conf`
|
`com.geumdo.net`
|
`/webFolder/com/public`
|
|
`cp.conf`
|
`cp.geumdo.net`
|
`/webFolder/component`
|
|
`cubi.conf`
|
`cubi.geumdo.net`
|
`/webFolder/cubi`
|
|
`cubicon.conf`
|
`cubicon.geumdo.net`
|
`/webFolder/cubicon`
|
|
`daeguw.conf`
|
`daeguw.geumdo.net`
|
`/webFolder/daeguw`
|
|
`design.conf`
|
`design.geumdo.net`
|
`/webFolder/design`
|
|
`design2.conf`
|
`design2.geumdo.net`
|
`/webFolder/design2`
|
|
`design3.conf`
|
`design3.geumdo.net`
|
`/webFolder/design3`
|
|
`dgei.conf`
|
`dgei.geumdo.net`
|
`/webFolder/dgei/public`
|
|
`dongbang.conf`
|
`dongbang.geumdo.net`
|
`/webFolder/dongbang/`
|
|
`dsa.conf`
|
`dsa.geumdo.net`
|
`/webFolder/dsa/public`
|
|
`facility.conf`
|
`facility.geumdo.net`
|
`/webFolder/facility/public`
|
|
`geumdo-test.conf`
|
`geumdo-test.geumdo.net`
|
`/webFolder/geumdo`
|
|
`hmg.conf`
|
`hmg.geumdo.net`
|
`/webFolder/hmg/public`
|
|
`ictcog.conf`
|
`ictcog.geumdo.net`
|
`/webFolder/ictcog/public`
|
|
`imdp.conf`
|
`imdp.geumdo.net`
|
`/webFolder/imdp/public`
|
|
`imdp_old.conf`
|
`imdp-old.geumdo.net`
|
`/webFolder/imdp_old/public`
|
|
`jwt.conf`
|
`jwt.geumdo.net`
|
`/webFolder/jwt/public`
|
|
`khvatec.conf`
|
`khvatec.geumdo.net`
|
`/webFolder/khvatec`
|
|
`lac2.conf`
|
`lac2.geumdo.net`
|
`/webFolder/lac2/public`
|
|
`men.conf`
|
`men.geumdo.net`
|
`/webFolder/men/html`
|
|
`mpk.conf`
|
`mpk2.geumdo.net`
|
`/webFolder/mpk`
|
|
`mt.conf`
|
`mt.geumdo.net`
|
`/webFolder/mt`
|
|
`odin.conf`
|
`odin.geumdo.net`
|
`/webFolder/odin/html`
|
|
`passqr.conf`
|
`passqr.geumdo.net`
|
`/webFolder/passqr`
|
|
`passwifi.conf`
|
`passwifi.geumdo.net`
|
`/webFolder/passWiFi`
|
|
`phpinfo.php`
|
`phpinfo.geumdo.net`
|
`/webFolder5.6/phpinfo`
|
|
`pms.conf`
|
`pms.geumdo.net`
|
`/webFolder/pms`
|
|
`project.conf`
|
`project.geumdo.net`
|
`/webFolder/project/public`
|
|
`rcit.conf`
|
`rcit.geumdo.net`
|
`/webFolder/rcit/public`
|
|
`rully.conf`
|
`rully.geumdo.net`
|
`/webFolder/rully`
|
|
`satisfy.conf`
|
`satisfy.geumdo.net`
|
`/webFolder/satisfy/public`
|
|
`sian.conf`
|
`sian.geumdo.net`
|
`/webFolder/sian`
|
|
`skin.conf`
|
`skin.geumdo.net`
|
`/webFolder/skin`
|
|
`smartmdp.conf`
|
`smartmdp.geumdo.net`
|
`/webFolder/smartmdp/public`
|
|
`smartvillage.conf`
|
`smartvillage.geumdo.net`
|
`/webFolder/smartvillage/public`
|
|
`sms_laravel.conf`
|
`sms.geumdo.net`
|
`/webFolder/sms_laravel/public`
|
|
`test.conf`
|
`test.geumdo.net`
|
`/webFolder/geumdo`
|
|
`todo_list.conf`
|
`todo.geumdo.net`
|
`/webFolder/todo_list`
|
|
`tva.conf`
|
`tva.geumdo.net`
|
`/webFolder/moi`
|
|
`tva2.conf`
|
`tva2.geumdo.net`
|
`/webFolder/moi2/public`
|
#### PHP 5.6-FPM (`unix:/var/run/php/php5.6-fpm.sock`)
| 설정 파일 | 도메인 (server_name) | 웹 루트 (root) |
| ------------------ | -------------------------- | -------------------------------------- |
|
`3dprinter.conf`
|
`3dprinter.geumdo.net`
|
`/webFolder5.6/3dprinter`
|
|
`dghope.conf`
|
`dghope.geumdo.net`
|
`/webFolder5.6/ces`
|
|
`g3d-dev.conf`
|
`g3d-dev.geumdo.net`
|
`/webFolder/g3d_dev`
|
|
`gds_eval.conf`
|
`eval.geumdo.net`
|
`/webFolder5.6/gds_eval/public_html`
|
|
`iact.conf`
|
`iact.geumdo.net`
|
`/webFolder5.6/iact`
|
|
`ictcog_gnu.conf`
|
`ictcog-gnu.geumdo.net`
|
`/webFolder5.6/ictcog_gnu`
|
|
`imaker.conf`
|
`imaker.geumdo.net`
|
`/webFolder5.6/imaker`
|
|
`lac.conf`
|
`lac.geumdo.net`
|
`/webFolder5.6/lac/public_html`
|
|
`mailer.conf`
|
`mailer.geumdo.net`
|
`/webFolder/nmail2/nmail`
|
|
`makedaegu.conf`
|
`makedaegu.geumdo.net`
|
`/webFolder5.6/makedaegu`
|
|
`sabg_survey.conf`
|
`survey.gdlab.co.kr`
|
`/webFolder/sabg_survey`
|
|
`sms_dgei.conf`
|
`sms-gnu.geumdo.net`
|
`/webFolder5.6/sms_dgei/public_html`
|
|
`sw3d_php.conf`
|
`sw3d.geumdo.net`
|
`/webFolder5.6/sw3d`
|
|
`upcycle.conf`
|
`upcycle.geumdo.net`
|
`/webFolder5.6/upcycle/public_html`
|
|
`visitor.conf`
|
`visitor.geumdo.net`
|
`/webFolder5.6/visitor/public_html`
|
### 3.3. SSL/TLS 적용 사이트 목록
HTTPS를 사용하는 사이트 목록입니다.
`Certbot`
으로 관리되는 인증서는 자동으로 갱신됩니다.
| 설정 파일 | 도메인 (server_name) | 인증서 관리 | 비고 |
| ------------------------------ | ----------------------------- | ----------------------------------------------------- | ---------------------------------------- |
|
`ai_was.conf`
|
`gdlab.co.kr www.gdlab.co.kr`
| 수동 (
`/etc/nginx/ssl/gdlab.co.kr/`
) | HTTP to HTTPS 리다이렉트 |
|
`flask_proxy.conf`
|
`proxy.geumdo.net`
| Certbot (
`/etc/letsencrypt/live/proxy.geumdo.net/`
) | HTTP to HTTPS 리다이렉트 |
|
`gbax.conf`
|
`gbmax.or.kr`
| 수동 (
`/etc/nginx/ssl/gbmax.or.kr/`
) |
`www`
리다이렉트, HTTP to HTTPS 리다이렉트 |
|
`geumdo_desktop_docker.conf`
|
`geumdo.net www.geumdo.net`
| 수동 (
`/etc/nginx/ssl/geumdo.net/`
) | HTTP to HTTPS 리다이렉트 |
|
`geumdo_java_upgrade.conf`
|
`dip-zero.geumdo.net`
| Certbot (
`/etc/letsencrypt/live/dip-zero.geumdo.net/`
) | HTTP to HTTPS 리다이렉트 |
|
`posteio.conf`
|
`mail.geumdo.net`
| Certbot (
`/etc/letsencrypt/live/mail.geumdo.net/`
) | HTTP to HTTPS 리다이렉트 |
|
`ynax.conf`
|
`max.or.kr`
| 수동 (
`/etc/nginx/ssl/max.or.kr/`
) |
`www`
리다이렉트, HTTP to HTTPS 리다이렉트 |
|
`default`
|
`_`
(기본 서버) | 수동 (
`/etc/nginx/ssl-certs/nginx.crt`
) | 일치하는 도메인 없는 443 요청 처리 (444 반환) |
### 3.4. 특수 설정
#### WebSocket 지원
Jupyter Notebook/Lab과 같이 실시간 양방향 통신이 필요한 서비스를 위해 WebSocket을 지원하도록 설정된 프록시입니다.
-
**`jupyter.conf`**
:
`jupyter.geumdo.net`
->
`http://jupyter.geumdo.net:8888`
-
**`jupyter_gpu.conf`**
:
`jupyter-gpu.geumdo.net`
->
`http://192.168.0.70:8888`
-
**`jupyter_gpu2.conf`**
:
`jupyter-gpu2.geumdo.net`
->
`http://192.168.0.71:8888`
#### SSE (Server-Sent Events) 지원
`vnexa-api.geumdo.net`
서비스는 서버에서 클라이언트로 단방향 데이터 스트리밍을 위한 SSE를 지원합니다. 이를 위해
`/api/v1/sse/`
경로에 대해 응답 버퍼링을 끄고(
`proxy_buffering off;`
), 연결을 오래 유지하도록 타임아웃을 길게 설정했습니다.
-
**`vnexa_api.conf`**
:
`vnexa-api.geumdo.net`
->
`http://192.168.0.70:8000`
#### 기타: 기본 서버 블록 (`default`)
-
`server_name`
이 일치하는 가상 호스트가 없을 경우, 모든
**HTTP(80) 요청**
은
**404 Not Found**
를 반환합니다.
-
일치하는
`server_name`
이 없는
**HTTPS(443) 요청**
에 대해서는 응답 없이 연결을 즉시 종료하는
**444 Connection Closed Without Response**
를 반환하여 보안을 강화합니다.
---
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment