차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판다음 판 | 이전 판 | ||
tech:nginx [2016/10/02 12:45] – [Nginx (엔진엑스)] 124.49.87.246 | tech:nginx [2023/09/11 21:01] (현재) – [redirect subdomain to port] V_L | ||
---|---|---|---|
줄 1: | 줄 1: | ||
{{tag> | {{tag> | ||
======Nginx (엔진엑스)====== | ======Nginx (엔진엑스)====== | ||
- | |||
- | {{http:// | ||
엔진엑스 nginx는 러시아 개발자(Igor Sysoev)가 혼자서 만든 프로젝트이지만, | 엔진엑스 nginx는 러시아 개발자(Igor Sysoev)가 혼자서 만든 프로젝트이지만, | ||
http:// | http:// | ||
- | |||
특히 nginx는 http:// | 특히 nginx는 http:// | ||
- | 현재 Nginx를 쓰는 유명한 곳으로는 페이스북, | + | 현재 Nginx를 쓰는 유명한 곳으로는 페이스북, |
{{http:// | {{http:// | ||
- | nginx 는 비동기(async) 이벤트 기반(ioctl, | + | nginx 는 비동기(async) 이벤트 기반(ioctl, |
따라서, 더 적은 자원으로 더 빠르게 데이터를 서비스 할 수 있다. | 따라서, 더 적은 자원으로 더 빠르게 데이터를 서비스 할 수 있다. | ||
줄 20: | 줄 17: | ||
=====성능===== | =====성능===== | ||
- | + | 성능은 접속자가 어느 정도 이상 되고 다양한 사이트가 운영되면 차이가 많이 난다. 동접자가 많을수록 체감할수 있다 물론 설정을 시스템에 맞게 잘 해주면 효과가 극대화 되겠다. | |
- | 성능은 접속자가 어느 정도 이상 되고 다양한 사이트가 운영되면 차이가 많이 난다. 동접자가 많을수록 체감할수 있다 물론 설정을 시스템에 맞게 잘 해 주셔야 | + | |
서버가 리눅스일경우 그리고 멀티코어일 경우 엔진엑스와 아파치의 차이가 많이 난다. | 서버가 리눅스일경우 그리고 멀티코어일 경우 엔진엑스와 아파치의 차이가 많이 난다. | ||
- | 한국에서 엔진엑스를 많이 안쓰는 이유는 | + | 한국에서 엔진엑스를 많이 안쓰는 이유는 한글 문서들이 많이 없기 때문이다. 호스팅 서비스의 경우 rewrite 관련 부분을 사용하는 호스팅 사용자가 많은 경우 상당히 귀찮아 질 수 있다. |
보통 접속자가 많은 사이트 (토렌트, 유머 등등) 인 경우 엔진엑스를 많이 쓰고 있는 추세이다, | 보통 접속자가 많은 사이트 (토렌트, 유머 등등) 인 경우 엔진엑스를 많이 쓰고 있는 추세이다, | ||
성능을 원하면 Nginx로 셋팅하자. | 성능을 원하면 Nginx로 셋팅하자. | ||
- | |||
[[http:// | [[http:// | ||
- | |||
Use nginx in the front as proxy, and serving all static content (css, images, js) and leaving the php process to Apache. | Use nginx in the front as proxy, and serving all static content (css, images, js) and leaving the php process to Apache. | ||
줄 51: | 줄 45: | ||
=====윈도용===== | =====윈도용===== | ||
- | 윈도우용 Nginx는 native win32 api를 이용하며, | + | 윈도우용 Nginx는 native win32 api를 이용하며, |
http:// | http:// | ||
줄 69: | 줄 63: | ||
=====설치===== | =====설치===== | ||
- | |||
우분투에서 패키지를 이용해 설치하면된다. | 우분투에서 패키지를 이용해 설치하면된다. | ||
줄 86: | 줄 79: | ||
</ | </ | ||
- | 혹시 업그레이드가 잘 안먹으면 | + | 혹시 업그레이드가 잘 안먹으면 |
sudo apt-get dist-upgrade | sudo apt-get dist-upgrade | ||
- | |||
=====설정===== | =====설정===== | ||
Nginx 설정은 ''/ | Nginx 설정은 ''/ | ||
- | |||
PHP5와 Nginx 연동하기위해 사이트 설정 파일에 다음 줄을 추가한다. | PHP5와 Nginx 연동하기위해 사이트 설정 파일에 다음 줄을 추가한다. | ||
줄 121: | 줄 112: | ||
sudo service php5-fpm restart | sudo service php5-fpm restart | ||
- | |||
- | |||
sudo service nginx restart | sudo service nginx restart | ||
줄 130: | 줄 119: | ||
유닉스소켓 연결이 조금 더 빠르기는 하지만 TCP/IP 만큼 Scalable 하지는 않다. 일일 방문자가 만명 수준이 본 사이트(http:// | 유닉스소켓 연결이 조금 더 빠르기는 하지만 TCP/IP 만큼 Scalable 하지는 않다. 일일 방문자가 만명 수준이 본 사이트(http:// | ||
- | 이런 경우 nginx가 502 에러를 뿜는다고 하는데, 그냥 먹통이 되기도 한다. 소켓 세팅을 만지거나 그냥 | + | 이런 경우 nginx가 502 에러를 뿜는다고 하는데, 그냥 먹통이 되기도 한다. 소켓 세팅을 만지거나 그냥 |
In your fastcgi conf change: | In your fastcgi conf change: | ||
줄 138: | 줄 127: | ||
fastcgi_pass 127.0.0.1: | fastcgi_pass 127.0.0.1: | ||
- | |||
- | |||
http:// | http:// | ||
줄 156: | 줄 143: | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// | ||
- | |||
* last vs rewrite | * last vs rewrite | ||
줄 165: | 줄 151: | ||
< | < | ||
- | server_name m.openwiki.kr; | + | |
- | # return 301 $scheme:// | + | |
| | ||
}</ | }</ | ||
줄 230: | 줄 216: | ||
</ | </ | ||
====Compression==== | ====Compression==== | ||
- | / | + | / |
http section | http section | ||
< | < | ||
- | + | - enable gzip compression | |
- | # enable gzip compression | + | |
gzip on; | gzip on; | ||
gzip_min_length | gzip_min_length | ||
줄 242: | 줄 227: | ||
gzip_types | gzip_types | ||
gzip_vary on; | gzip_vary on; | ||
- | # end gzip configuration | + | - end gzip configuration |
</ | </ | ||
줄 264: | 줄 249: | ||
====subdomain==== | ====subdomain==== | ||
- | 이런식이다. | + | 이런식이다. |
< | < | ||
줄 290: | 줄 275: | ||
} | } | ||
} | } | ||
+ | </ | ||
+ | |||
+ | ====max children==== | ||
+ | ''/ | ||
+ | < | ||
+ | pm.max_children = 128 | ||
+ | |||
+ | pm.start_servers = 10 | ||
+ | |||
+ | pm.min_spare_servers = 4 | ||
+ | |||
+ | pm.max_spare_servers = 16 | ||
+ | |||
+ | pm.max_requests = 500 | ||
</ | </ | ||
====성가신 로그 끄기==== | ====성가신 로그 끄기==== | ||
+ | [[var_log]] | ||
<file conf> | <file conf> | ||
- | # Avoids filling up the error logs with commonly requested files. | + | - Avoids filling up the error logs with commonly requested files. |
- | # Note that if you have a custom 404 page, the request may be logged anyway. | + | |
location = /robots.txt { log_not_found off; } | location = /robots.txt { log_not_found off; } | ||
location = / | location = / | ||
줄 303: | 줄 303: | ||
location = / | location = / | ||
</ | </ | ||
- | |||
접근 로그는 '' | 접근 로그는 '' | ||
access_log off; | access_log off; | ||
+ | 에러 로그도 끌 수 있다. | ||
+ | error_log off; | ||
=====아파치 호환성===== | =====아파치 호환성===== | ||
====getallheaders()==== | ====getallheaders()==== | ||
- | getallheaders는 아파치의 헤더를 받아오는 것으로 nginx에서는 작동하지 않는다. 호환성을 위해 다음과 같은 함수를 만들어 쓰면 된다. | + | getallheaders는 아파치의 헤더를 받아오는 것으로 nginx에서는 작동하지 않는다. 호환성을 위해 다음과 같은 함수를 만들어 쓰면 된다. |
<file php> | <file php> | ||
줄 337: | 줄 338: | ||
* http:// | * http:// | ||
* http:// | * http:// | ||
- | * http:// | + | * http:// |
- | |||
- | |||
- | ^ 누구나 수정하실 수 있다. [[http:// | ||
- | |||
- |