{"componentChunkName":"component---src-templates-blog-post-js","path":"/infra/200525-NGINX/","result":{"data":{"site":{"siteMetadata":{"title":"Junbyeol Blog","author":"Junsung Yoon","siteUrl":"https://junbyeol.github.io","comment":{"disqusShortName":"","utterances":"junbyeol/junbyeol.github.io"},"sponsor":{"buyMeACoffeeId":"junbyeol"}}},"markdownRemark":{"id":"4c1b5c33-8696-5f0d-af08-76f508850c45","excerpt":"이 글은 윤준성의 개발꼬맹이 시절, 혼자 노션에 공부하며 정리해둔 것 중 괜찮은 것을 추려올린 글입니다.\n기술블로그 글 기고 목적으로 작성되지 않아, 가독성이 좋지 않거나 알 수 없는 워딩이 있을 수 있습니다. 웹서버의 역할 정적 파일을 처리하는 HTTP 서버 HTML, CSS, JS, 이미지 등 정적 파일들의 처리 응용프로그램 서버에 요청을 보내는 리버스 프록시 서버 클라이언트는 가짜 서버(NGINX)에 request 가짜 서버는 진짜 배후 서버(reverse server…","html":"<blockquote>\n<p>이 글은 윤준성의 개발꼬맹이 시절, 혼자 노션에 공부하며 정리해둔 것 중 괜찮은 것을 추려올린 글입니다.\n기술블로그 글 기고 목적으로 작성되지 않아, 가독성이 좋지 않거나 알 수 없는 워딩이 있을 수 있습니다.</p>\n</blockquote>\n<h1 id=\"웹서버의-역할\" style=\"position:relative;\"><a href=\"#%EC%9B%B9%EC%84%9C%EB%B2%84%EC%9D%98-%EC%97%AD%ED%95%A0\" aria-label=\"웹서버의 역할 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>웹서버의 역할</h1>\n<h3 id=\"정적-파일을-처리하는-http-서버\" style=\"position:relative;\"><a href=\"#%EC%A0%95%EC%A0%81-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%B2%98%EB%A6%AC%ED%95%98%EB%8A%94-http-%EC%84%9C%EB%B2%84\" aria-label=\"정적 파일을 처리하는 http 서버 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>정적 파일을 처리하는 HTTP 서버</h3>\n<ul>\n<li>HTML, CSS, JS, 이미지 등 정적 파일들의 처리</li>\n</ul>\n<h3 id=\"응용프로그램-서버에-요청을-보내는-리버스-프록시-서버\" style=\"position:relative;\"><a href=\"#%EC%9D%91%EC%9A%A9%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%84%9C%EB%B2%84%EC%97%90-%EC%9A%94%EC%B2%AD%EC%9D%84-%EB%B3%B4%EB%82%B4%EB%8A%94-%EB%A6%AC%EB%B2%84%EC%8A%A4-%ED%94%84%EB%A1%9D%EC%8B%9C-%EC%84%9C%EB%B2%84\" aria-label=\"응용프로그램 서버에 요청을 보내는 리버스 프록시 서버 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>응용프로그램 서버에 요청을 보내는 리버스 프록시 서버</h3>\n<ul>\n<li>클라이언트는 가짜 서버(NGINX)에 request</li>\n<li>가짜 서버는 진짜 배후 서버(reverse server)로부터 데이터를 가져옴</li>\n<li>\n<p>이점?</p>\n<ul>\n<li>\n<p>보안 상의 이점</p>\n<ul>\n<li>보통 기업의 네트워크 환경은 메일서버, 웹서버, FTP 서버 등이 위치하는 DMZ가 존재</li>\n<li>DMZ가 털려도 이들은 어차피 그들에게 주어진 포트에만 접속 가능하므로 내부 망으로 연결 불가</li>\n</ul>\n</li>\n<li>\n<p>로드 밸런싱</p>\n<ul>\n<li>클라이언트가 직접 서버에 요청하면 프로세스 1개는 응답 대기상태로 기다려야 함</li>\n<li>프록시 서버를 둠으로써 요청을 배분하는 역할</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"참고-포워드-프록시-vs-리버스-프록시\" style=\"position:relative;\"><a href=\"#%EC%B0%B8%EA%B3%A0-%ED%8F%AC%EC%9B%8C%EB%93%9C-%ED%94%84%EB%A1%9D%EC%8B%9C-vs-%EB%A6%AC%EB%B2%84%EC%8A%A4-%ED%94%84%EB%A1%9D%EC%8B%9C\" aria-label=\"참고 포워드 프록시 vs 리버스 프록시 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>참고) 포워드 프록시 vs 리버스 프록시</h3>\n<h3 id=\"포워드-프록시\" style=\"position:relative;\"><a href=\"#%ED%8F%AC%EC%9B%8C%EB%93%9C-%ED%94%84%EB%A1%9D%EC%8B%9C\" aria-label=\"포워드 프록시 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>포워드 프록시</h3>\n<ul>\n<li>클라이언트가 요청을 보낸 서버 대신 요청을 받아 원래 요청을 보낸 서버에 대신 전달해줌</li>\n<li>LAN → WAN의 요청을 대리로 수행</li>\n</ul>\n<h3 id=\"리버스-프록시\" style=\"position:relative;\"><a href=\"#%EB%A6%AC%EB%B2%84%EC%8A%A4-%ED%94%84%EB%A1%9D%EC%8B%9C\" aria-label=\"리버스 프록시 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>리버스 프록시</h3>\n<ul>\n<li>클라이언트로 부터 직접 요청을 받아 배후 서버에 전달해줌</li>\n<li>WAN → LAN의 요청을 대리로 수행</li>\n</ul>\n<p><strong>클라이언트가 최초에 요청을 보내는 곳의 차이!</strong></p>\n<h1 id=\"nginx-디렉토리-구조\" style=\"position:relative;\"><a href=\"#nginx-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC-%EA%B5%AC%EC%A1%B0\" aria-label=\"nginx 디렉토리 구조 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Nginx 디렉토리 구조</h1>\n<div class=\"gatsby-highlight\" data-language=\"sql\"><pre class=\"language-sql\"><code class=\"language-sql\">├── conf<span class=\"token punctuation\">.</span>d <span class=\"token comment\"># (디렉토리) nginx.conf에서 불러들일 수 있는 파일을 저장</span>\n├── fastcgi<span class=\"token punctuation\">.</span>conf <span class=\"token comment\"># (파일) FastCGI 환경설정 파일</span>\n├── fastcgi_params\n├── koi<span class=\"token operator\">-</span>utf\n├── koi<span class=\"token operator\">-</span>win\n├── mime<span class=\"token punctuation\">.</span><span class=\"token keyword\">types</span>\n├── nginx<span class=\"token punctuation\">.</span>conf <span class=\"token comment\"># 접속자 수, 동작 프로세스 수 등 퍼포먼스에 관한 설정들</span>\n├── proxy_params\n├── scgi_params\n├── sites<span class=\"token operator\">-</span>available <span class=\"token comment\"># 비활성화된 사이트들의 설정 파일들이 위치한다.</span>\n│   └── <span class=\"token keyword\">default</span>\n├── sites<span class=\"token operator\">-</span>enabled <span class=\"token comment\"># 활성화된 사이트들의 설정 파일들이 위치한다. 존재하지 않은 경우에는 디렉토리를 직접 만들 수도 있다.</span>\n│   └── <span class=\"token keyword\">default</span> <span class=\"token operator\">-</span><span class=\"token operator\">></span> <span class=\"token operator\">/</span>etc<span class=\"token operator\">/</span>nginx<span class=\"token operator\">/</span>sites<span class=\"token operator\">-</span>available<span class=\"token operator\">/</span><span class=\"token keyword\">default</span>\n├── snippets\n│   ├── fastcgi<span class=\"token operator\">-</span>php<span class=\"token punctuation\">.</span>conf\n│   └── snakeoil<span class=\"token punctuation\">.</span>conf\n├── uwsgi_params\n└── win<span class=\"token operator\">-</span>utf</code></pre></div>\n<p><a href=\"https://extrememanual.net/9976\">NGINX 기본 환경 설정 튜닝 및 설명 - 익스트림 매뉴얼</a></p>\n<p>sites-available에 server block을 추가해서 적절히 커스텀 가능</p>","frontmatter":{"title":"NGINX","date":"May 25, 2020"}}},"pageContext":{"slug":"/infra/200525-NGINX/","previous":{"fields":{"slug":"/language/200524-java-oop/"},"frontmatter":{"title":"Java & OOP"}},"next":{"fields":{"slug":"/language/200816-프로그램-실행/"},"frontmatter":{"title":"프로그램 실행"}}}}}