๊ฐœ๋ฐœ ์ง€์‹, ์Šคํฌ๋ฆฝํŠธ/์›น์„œ๋ฒ„

nginx ์ ์šฉ์‹œ css ๊นจ์ง€๋Š” ํ˜„์ƒ

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2024. 6. 30. 15:42

Nginx๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ง„ ์ ์ด ์žˆ๋‹ค.

 

์ด๋•Œ, ์›น์„œ๋ฒ„ nginx์˜ default.conf์—์„œ proxy_pass๋กœ ์„ค์ •์„ ํ•˜์—ฌ WAS(Web Application Server)์— ์žˆ๋Š” ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ–ˆ๋‹ค.

 

๊ทผ๋ฐ, ์ฒ˜์Œ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญ์„ ํ–ˆ์„ ๋•Œ css์™€ js๊ฐ€ ์ ์šฉ์ด ์ „ํ˜€ ์•ˆ ๋˜์—ˆ๋‹ค.

 

์ฝ˜์†”์—์„œ ์—๋Ÿฌ๋ฅผ ๋ณด๋‹ˆ 404์—๋Ÿฌ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ๋‹ค.

 

404 : url์„ ์ž˜๋ชป ์ž…๋ ฅํ–ˆ์„ ๋•Œ ์š”์ฒญํ•œ url์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ํ•˜์ง€๋งŒ was์—์„œ๋Š” ๋ฌธ์ œ์—†์ด ๋˜์—ˆ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ๋Š” ์•ˆ ๋˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์„ ๋•Œurl ์ž์ฒด์— ์˜คํƒ€๊ฐ€ ์žˆ์ง€๋Š” ์•Š์€ ์ƒํ™ฉ์ด๋‹ค. ์ฆ‰, ์–ด๋– ํ•œ ์ด์œ ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ชป์ฐพ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด๋ง์€ ์ฆ‰, nginx๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” nginx์—์„œ๋„ ์š”์ฒญํ•ด์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

 

์™œ๋ƒํ•˜๋ฉด nginx๋ฅผ ์„ค์ •ํ•ด์„œ ๋ธŒ๋ผ์šฐ์ €์— ์ตœ์ดˆ ํ™”๋ฉด์ด์œผ๋กœ ๋‚˜์˜ค๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ •์  ํด๋” ๋ฐ ํŒŒ์ผ๋“ค์˜ ๊ตฌ์กฐ๋ฅผ ์„ค์ •ํ•ด ๋‘” ๋Œ€๋กœ ๊ฐ€์ ธ์™€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค๋ฉด,

server {
    listen 80;
    server_name example.com;

    # ์ •์  ํŒŒ์ผ ์ฒ˜๋ฆฌ
    location /static/ {
        alias /path/to/your/static/files/;
        # ์ •์  ํŒŒ์ผ ์บ์‹ฑ์„ ์œ„ํ•œ ํ—ค๋” ์„ค์ • (์˜ต์…˜)
        expires 30d;
        add_header Cache-Control "public, max-age=2592000";
    }

    # ๋™์  ์š”์ฒญ ์ฒ˜๋ฆฌ (์˜ˆ: PHP, Python, Node.js ๋“ฑ)
    location / {
        proxy_pass http://your_was_backend;
        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;
    }
}

 

์ด๋Ÿฐ ์‹์œผ๋กœ ์ •์  ํด๋”๋“ค์„ ๊ฐ€์ ธ์™€์„œ html๋“ฑ ๊ธฐ๋ณธ ์ ์œผ๋กœ ์„ค์ • ํ•ด๋‘” ๊ตฌ์กฐํ˜•ํƒœ๋กœ ngnix์— ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ฆ‰, ์‹ค์ œ html์— <script>์™€ <css>์˜ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋Š”๋ฐ ์ด ๊ตฌ์กฐ์— ๋งž๊ฒŒ ๊ฐ€์ ธ์˜ค๋ฉด ๋˜๋Š” ํ˜•ํƒœ์ด๋‹ค.

 

๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ์•„๋ž˜์ฒ˜๋Ÿผ ๊ตฌ์„ฑํ–ˆ๋”๋‹ˆ, ๊นจ์กŒ๋˜ ํ™”๋ฉด์ด ์ •์ƒ์ ์œผ๋กœ ๋Œ์•„์™”๋‹ค.

 location /axxx/dxxx {
        proxy_pass http://192.xxx:8080/axxx/dxxx;
        # ํด๋ผ์ด์–ธํŠธ์˜ ํ˜ธ์ŠคํŠธ ํ—ค๋”๋ฅผ ์œ ์ง€
        proxy_set_header Host $host;

        # ํด๋ผ์ด์–ธํŠธ์˜ ์‹ค์ œ IP ์ฃผ์†Œ ์ „๋‹ฌ
        proxy_set_header X-Real-IP $remote_addr;

        # ํ”„๋ก์‹œ๋ฅผ ๊ฑฐ์นœ ํด๋ผ์ด์–ธํŠธ์˜ IP ์ฃผ์†Œ ๋ฆฌ์ŠคํŠธ ์ „๋‹ฌ
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ํ”„๋กœํ† ์ฝœ ์ „๋‹ฌ (HTTP ๋˜๋Š” HTTPS)
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    location /axxx/css/ {
        proxy_pass http://192.xxx:8080/axxx/css/;
        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;
    }

    location /axxx/js/ {
        proxy_pass http://192.xxx:8080/axxx/js/;
        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;
    }

 location /axxx/img/ {
        proxy_pass http://192.xxx:8080/axxx/img/;
        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;
    }

 

์ดํ›„, ๋™์ ์ธ ํŒŒ์ผ๋“ค์€ was์— ์š”์ฒญํ•˜๊ฒŒ๋” proxy_pass๋ฅผ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

์ด์ „์—๋Š” ngnix๋ฅผ ์•„๋ฌด ์ƒ๊ฐ์—†์ด ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ์ƒ๊ฐ๋ณด๋‹ค ๊ณต๋ถ€ํ•  ๋‚ด์šฉ์ด ๋งŽ์€ ๊ฒƒ ๊ฐ™๋‹ค.

 

์ฐจ์ฐจ ์ •๋ฆฌํ•ด์„œ ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌํ•˜๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค.

 

 

*expires๋ž€ -> Nginx ์„ค์ • ํŒŒ์ผ์—์„œ expires ๋””๋ ‰ํ‹ฐ๋ธŒ๋Š” ๋ธŒ๋ผ์šฐ์ € ์บ์‹ฑ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ์ด ๋””๋ ‰ํ‹ฐ๋ธŒ๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ œ๊ณต๋˜๋Š” ํŒŒ์ผ์˜ ์บ์‹ฑ ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ์˜ ๋ธŒ๋ผ์šฐ์ €๋Š” ์„ค์ •๋œ ๊ธฐ๊ฐ„ ๋™์•ˆ ํŒŒ์ผ์„ ์บ์‹œํ•˜๊ณ , ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋‹ค์‹œ ์š”์ฒญํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ณ , ํด๋ผ์ด์–ธํŠธ์˜ ๋กœ๋“œ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ฐธ๊ณ :

https://velog.io/@dreamjh/djangonginx-%EC%82%AC%EC%9A%A9%EC%8B%9C-css-%EA%B9%A8%EC%A7%80%EB%8A%94-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0%EB%B2%95