Nginx๋ ํ๋ก ํธ๋ถํฐ ๋ฐฑ์๋๊น์ง ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌ ๋ฐ ์ด์ํ๋ ค๋ฉด ๊ผญ ๊ณ ์ณ์ผํ ๊ด๋ฌธ์ฒ๋ผ ํ๋๋ผ๊ณ ์๊ฐํ๋ค. ํ์ง๋ง ์ฒ์ ์ ํ๋ฉด ์๊น๋ ์๋ ํฐ๋ฏธ๋์์ ๊ธ์ ํ๋๋ง ํ๋ ค๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์์ธ์ ์ฐพ๋ ๊ฒ๋ ๊ต์ฅํ ์ด๋ ค์ ๊ณจ๋จธ๋ฆฌ๋ฅผ ์๊ณคํ๋ค.
๋ฌผ๋ก ์ฌ์ด ๋ฐฉ๋ฒ๋ง์ด ๋ฅ์ฌ๋ ์๋์ง๋ง, ๊ธฐ์ ์ ์ญ๋์ด๋ ์ํคํ ์ฒ์ ๊ณต์ ๋ค์ฌ์ผํ๋ ๋ถ๋ถ์ด ์๋๋ค๋ณด๋ ์ธ์ธํ ์ธํ๋ผ ์ค์ ์ ์๊ฐ์ ๋ค์ด๋ ๊ฒ ๋ณด๋ค ์ดํ๋ฆฌ์ผ์ด์ ๋จ์์ ๊ธฐ์ ์ ์ฑ๋ฆฐ์ง์ ์๊ฐ์ ์๋๊ฒ ๋ ๋ซ๋ค๊ณ ๋ณธ๋ค.
Nginx Proxy Manager ๋
Nginx Proxy Manager๋ Nginx๋ฅผ Web console๊ธฐ๋ฐ์ผ๋ก ๊ด๋ฆฌ ๊ฐ๋ฅํ GUI ์คํ์์ค์ด๋ค. ๊ฝค ๋ง์ ์ ์ฆ์ผ์ด์ค๋ฅผ ์ปค๋ฒ ๊ฐ๋ฅํ๋ฐ, ๋จ์ ์๋ฒ ํ๋ก์ (๋ผ์ฐํ )๋ถํฐ ์ ์ ํ์ผ ํธ์คํ ๊น์ง ๊ฐ๋ฅํ๋ค.
๐จ ์ ์ ํ์ผ ํธ์คํ ์ ๊ฒฝ์ฐ, repo issue์์ ์ปจํธ๋ฆฌ๋ทฐํฐ์ ์ฌ์ฉ์๋ค์ด advanced๊ธฐ๋ฅ์ ์ด์ฉํด ์ปค์คํ ์ค์ ์ ์ ๋ ฅํด ์ฌ์ฉํ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ nginx์ ํฐ ๋ณ๊ฒฝ์ด ์๊ฑฐ๋ Nginx Proxy Manager ์๋ก์ด ๋ฒ์ ์์ ์๋ํ์ง ์์ ์ ์์ผ๋, ๊ธฐ์กด์ ๊ตฌ์ถ๋ ์์คํ ์ ๋ฒ์ ์ ๋ฐ์ดํธ๋ฅผ ์ ์ํ๊ณ ์๋ก์ด ์์คํ ์ ๊ตฌ์ถํ๋ค๊ฐ ๋์ํ์ง ์์ผ๋ฉด ์๋ก์ด ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํ๋ค.
Setup
Docker Compose ์ด์ฉํ ์ค์น
๊ณต์ ๋ํ๋จผํธ์์๋ Docker Compose๋ฅผ ์ด์ฉํด ์ค์นํ ๋๋ก ์ ๋ํ๋ค.
1. Docker Install documentation
2. Docker-Compose Install documentation
3. docker-compose.yml ์์ฑ
ersion: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
- /opt/websites:/mnt/user/appdata/NginxProxyManager/websites
- /opt/websites:/mnt/user/appdata/NginxProxyManager/websites : ์ ์ ํ์ผ ํธ์คํ
์ ์ํ ์ปค์คํ
์ค์ ์ด๋ค.
- /opt/websites : ํธ์คํ ํ ์ ์ ํ์ผ์ด ๋ค์ด์๋ ๊ฒฝ๋ก์ด๋ค. ๋ด๊ฐ ์ํ๋๋๋ก ์ค์ ํ๋ฉด ๋๋ค. (ํ์์ ๊ฒฝ์ฐ, ๋ฆฌ์กํธ ํ๋ก์ ํธ๊ฐ ๋น๋๋ ๊ฒ์ด ๋ฐ๋ก ๋ฐ์๋๋๋ก ํ๊ธฐ ์ํด, ..../Project-FE/dist/ ์ผ๋ก ์ค์ ํ์๋ค.
- /mnt/user/appdata/NginxProxyManager/websites : Nginx Proxy Manager์ ๊ฒฝ๋ก์ด๋ค. ์์ ๋ถ๊ฐ. ์คํ์๋๋ก ์ ์
4. Run Docker Compose
docker-compose up -d
# If using docker-compose-plugin
docker compose up -d
Nginx Proxy Manager ์ฌ์ฉ
81๋ฒ ํฌํธ๊ฐ ๊ด๋ฆฌ ์ฝ์์ด๋ค. ์ด๊ธฐ ๊ณ์ ์ admin@example.com / changeme ์ด๋ค. ์ ์ํ๋ฉด ๋ฐ๋ก ๋ณ๊ฒฝํ๊ฒ ๋๋ค.
๊ธฐ๋ฅ
์ ๊ณต๋๋ ์ฃผ์ ๊ธฐ๋ฅ์ 5๊ฐ์ง ์ด๋ค. ๋ณธ ํฌ์คํ ์์๋ ๊ฐ์ฅ ๋์ค์ ์ด๊ณ ์ง์ ์ฌ์ฉํด๋ณธ 1๋ฒ 5๋ฒ๋ง ๋ค๋ฃฌ๋ค.
1. Proxy Hosts : ์๋ฒ๋ก ๋ค์ด์จ ์์ฒญ์ ํน์ ์์น๋ก ๋ผ์ฐํ ํ๋ค
2. Redirection Hosts : ํน์ ๋๋ฉ์ธ์ผ๋ก ์ ์๋ ์์ฒญ์ ๋ค๋ฅธ ๋๋ฉ์ธ์ผ๋ก ๋ฆฌ๋ค์ด๋ ์ ์ํจ๋ค.
3. Streams : Nginx์ ์๋ก์ด ๊ธฐ๋ฅ์ธ Stream์ TCP/UDP ํธ๋ํฝ์ ๋คํธ์ํฌ์์ ๋ค๋ฅธ ์ปดํจํฐ๋ก ์ง์ ์ ๋ฌํด์ค๋ค. ๊ฒ์ ์๋ฒ๋ FTP, SSH ์๋ฒ ์ด์์ ์ฌ์ฉ๋๋ค.
4. 404 Hosts : 404 ์๋ต ํ์ด์ง ์ค์ ์ ํ๋ค.
5. SSL Certificates : LetsEncrypt ๊ธฐ๋ฐ SSL ์ธ์ฆ ์ค์ ์ ๊ด๋ฆฌํ๋ค.
5. SSL Certificates
letsencrypt๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ ํ ๋๋ฉ์ธ์ ๋ํ SSL ์ค์ ์ ๊ด๋ฆฌํ๋ค. Proxy Hosts์์ https SSL ์ ์์ ์ง์ํ๋ ค๋ฉด ๊ฐ์ฅ ๋จผ์ ํ์์ ์ผ๋ก ์ค์ ํด์ผ ํ๋ค. ๋๋ฉ์ธ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ 2๊ฐ์ง๊ฐ ์๋๋ฐ, ์ฌ์ฉํ ๋๋ฉ์ธ์ ์ ๋ถ ์ ์ํ๋ ๋ฐฉ๋ฒ๊ณผ DNS Challenge ์ค์ ์ ํตํด ์์ผ๋์นด๋ ์ค์ ์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
1. ์ฌ์ฉํ ๋๋ฉ์ธ ๋ช ์์ ์ ์ํ๋ ๋ฒ
nginx๋ก ๋ค์ด์จ ์์ฒญ์ ๋ผ์ฐํ ํ๋ ๊ฒ์ด๋ฏ๋ก, ์ฐ์ ์ฌ์ฉํ ๋๋ฉ์ธ์ ์ ์ํ๊ณ ์๋ฒ IP addr๋ก ๋ผ์ฐํ ์ ์ค์ ํ๋ค.
์ ์ํ ๋๋ฉ์ธ์ ๋ชจ๋ ์ ๊ณ , 'Test Server Reachability'๋ฅผ ๋๋ฌ ์ ํจ์ฑ์ ๊ฒ์ฆํ๋ค. ๊ฒ์ฆ์ด ์๋ฃํ๋ฉด ๋ฐ๋ก 'Save'๋ก ์์ฑํ๋ฉด ๋๋ค.
2. DNS Challenge, ์์ผ๋์นด๋(์์คํฐ๋ฆฌ์คํฌ) ์ฌ์ฉํ๋ ๋ฒ
ํด๋น ๋๋ฉ์ธ์ ์์ ๊ถ์ ํ์ธ์์ผ์ค์ผ๋ก์จ, ๋๋ฉ์ธ์ ์ผ์ผ์ด ์ ์ํ์ง ์์๋ ๋๋ค. ๋ค๋ง, ๋ ์์ธํ ์ธ์ฆ์ ๋ณด๋ฅผ ์๊ตฌํ๋๋ฐ, Route53์ ๊ฒฝ์ฐ IAM์ accessKey, secretKey๋ฅผ ์๊ตฌํ๋, ๊ฐ์์ ํ๋จ์ ๋ฐ๋ฅด๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
1. Proxy Hosts
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ผ๋ก ํน์ ๋๋ฉ์ธ์ ํตํ ์ ์์ ์๋ฒ ๋ด ๋ฆฌ์์ค๋ก ๋ผ์ฐํ ํ ์ ์๋ค. ๋ ๊ฐ์ง ํ์ฉ๋ฒ์ด ์๋๋ฐ, 1. ํฌํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฆฌ์์ค๋ก ๋ผ์ฐํ ๊ณผ 2. ์ ์ ํ์ผ ํธ์คํ ์ด๋ค.
1-1. ํฌํธ ๊ธฐ์ค ๋ฆฌ์์ค ๋ผ์ฐํ
81๋ฒ ํฌํธ๋ก ์ ์ํ๊ณ ์๋ nginx proxy manager ์ฝ์์ ๊ธฐ์ค์ผ๋ก ์์๋ณด์. nginx.test.com ๋๋ฉ์ธ์ ์๋ฒ๋ฅผ ํฅํด ๋ผ์ฐํ ํด ์ ์๋์๋ค๋ฉด, 'Domain Names'์ ์ ์๋(์ฌ์ฉํ ) ๋๋ฉ์ธ์ ์ ๋๋ค. SSL ์ธ์ฆ์๋ฅผ ๋ฑ๋กํ๋ค๋ฉด 'Scheme'๋ฅผ https๋ก ๋ณ๊ฒฝํ๊ณ , 'Forward Hostname / IP' ๋ฅผ ํ์ฌ ์๋ฒ ์์ํผ๋ก ์์ฑํ๊ณ 'Forward Port'๋ Nginx proxy Manager web console์ด LISTENํ๊ณ ์๋ 81๋ฒ ํฌ๋ฅด๋ฅผ ์ ๋๋ค.
ํ์์ ๋ฐ๋ผ SSL ํญ์์ ์ธ์ฆ์๋ฅผ ์ค์ ํ๊ณ 'Save'ํ์ฌ ํ๋ก์ ์ค์ ์ ์์ฑํ๋ฉด ๋๋ค.
Nginx์ฒ๋ผ ๋ฐ๋ก service restartํ ํ์ ์์ด, ์งง์ ๋๊ธฐ์๊ฐ ํ ๋ฐ๋ก ์ ์ฉ๋๋ค.
1-2. ์ ์ ํ์ผ ํธ์คํ
ํ์์ ๊ฒฝ์ฐ ํ๋ก ํธ ํ์๋ค์ด ๊ฐ๋ฐํ ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐ ์๋ฒ์ ๋์ฐ๋ ค๊ณ ํ๋๋ฐ, 2๊ฐ์ ๋ชจ๋๋ก ๋ถ๋ฆฌ๋์ด ์๋ ๊ตฌ์กฐ์ด๋ค๋ณด๋ ๊ธฐ์กด์ ์ฐ๋ PM2 ๋ฐฐํฌ ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ ๊ณค๋ํ๋ค. pnpm์ ์ด์ฉํด ๋ณ๋๋ก ๋น๋ํ๊ณ , ๋น๋ ํด๋ ์์ ์๋ ๊ฐ ๋ชจ๋์ index.html๋ง ๋ผ์ฐํ ํ๋ฉด ๋๋ค๊ณ ํด์ ๊ตฌํํด๋ณด์๋ค.
NginxProxyManager/nginx-proxy-manager ๋ ํผ์ ์ด์ ํ๋ (Use nginx-proxy-manager as web server #280)๋ฅผ ๋ณด๊ณ ๊ตฌํํ๋ค.
docker-compose.yml์ ์์ฑํ ๋, /opt/websites ์ ๋ํ ์ค๋ช ์ ๊ธฐ์ตํ๋๊ฐ? ๊ทธ ๋ถ๋ถ์ด ์ด ๋ถ๋ถ์ด๋ค. NginxProxyManager ๋ด๋ถ์ ์น ํธ์คํ ํด๋์ /opt/websites๋ฅผ ๋ง์ดํธํ๊ฒ ๋๋ค. ๋ณธ nginx์ ../site_enbles/.., ../sites-available/..์ ๋์ผํ๋ค๊ณ ๋ณด๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
ํ์์ ๊ฒฝ์ฐ, ํ ์คํธ ์๋ฒ ๋ด์ ๋ฆฌ์กํธ ํ๋ก์ ํธ ๊ตฌ์กฐ๊ฐ ์๋์ ๊ฐ์๋ฐ, ๋น๋์ dist ํด๋ ์์ ๋ชจ๋๋ณ๋ก ์์ฑ๋๋ฏ๋ก /opt/websites/๋ฅผ /home/sckwon/project/FE/dist๋ก ๋ณ๊ฒฝํ์๋ค.
๋ชจ๋์ ์ฐ๊ฒฐํ ๋๋ฉ์ธ์ ์ค์ ํ๊ณ , 'Forward Hostname / IP'์ 'Forward Port' ์๋ฌด ๊ฐ์ด๋ ์ ์ผ๋ฉด ๋๋ค. ํ์ผ์ ๋ผ์ฐํ ํ ๊ฒ์ด์ง๋ง, ํ์ ๊ฐ์ผ๋ก UI๊ฐ ์ค์ ๋์ด ์์ผ๋ฏ๋ก ์ ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. SSL๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค์ ํด์ค๋ค.
๐จ Cache Assets์ ์ฌ์ฉํ ๊ฒฝ์ฐ, js์ css๊ฐ ์ ๋๋ก ๋ก๋๋์ง ์๋ ์ด์๊ฐ ์๋ค๋ ์ฝ๋ฉํธ๊ฐ ์์ผ๋ ํ ์คํธํด๋ณด๊ณ ์ถ์ ๊ฒ์ด ์๋๋ผ๋ฉด ์ฃ๋ถ๋ฆฌ ์ฌ์ฉํ์ง ๋ง์.
๋ง์ง๋ง์ผ๋ก 'Advanced' ํญ์์ index.html๋ผ์ฐํ ์ ์ค์ ํ๋ฉด ๋๋ค. ํท๊ฐ๋ฆฌ๋ฉด ์๋๋ ๋ถ๋ถ์ด Nginx proxy manager๋ ๋์ปค ์ปจํ ์ด๋์ ๋ ์์ผ๋ฏ๋ก ์๋ฒ ๋ฃจํธ ๊ฒฝ๋ก๋ฅผ ๊ธฐ์ค์ผ๋ก ์๊ฐํ๋ฉด ์๋๋ค. docker compose์์ ์ค์ ํ๋๋ก, ๋ง์ดํ ํ๋ค NginxProxyManager ๋ด๋ถ ๊ฒฝ๋ก๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ์ผ๋ฉด ๋๋ค.
ํ์์ ๊ฒฝ์ฐ websites์ ๋ง์ดํ ํ distํด๋ ์์ ๋ชจ๋๋ณ๋ก ๋น๋ํ ํ๋ก์ ํธ๊ฐ ์์ฑ๋๋ฏ๋ก, root ๊ฒฝ๋ก์ ํด๋น ๋น๋ ํด๋์ ์ด๋ฆ์ ์ ์ผ๋ฉด ๋๋ค. ๊ทธ๋ฆฌ๊ณ 'Save'๋ฅผ ๋๋ฌ ์์ฑํ๋ฉด ๋์ด๋ค!
root /mnt/user/appdata/NginxProxyManager/websites/service-home;
index index.html;
location / {
try_files $uri /index.html /index.html;
}
์ ์ ํ์ผ ํธ์คํ ํ๋๋ผ ์ฝ์งํ ์ ์ ํฌ์คํ ์ผ๋ก ๋ค๋ฅธ ๋ถ๋ค์ ์ฝ์งํ์ง ์๊ธธ...
Nginx Proxy Manager๋ก ํ์ํ ๋ฐฐํฌ ๋๊ธธ...
๋.
'๐ค Backend > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SQL Injection๊ณผ XSS (Cross-Site Scripting) (1) | 2023.12.29 |
---|