- nginx 개요
- Nginx 설치
- CentOS 6.5에 nginx 설치
- Windows에 nginx 설치
- Nginx 환경 설정
- Rewrite 사용법
- Mediawiki Rewrite Rule 적용
- PHP 사용 설정
- Tomcat 6 설정
- Nginx에 UTF-8 설정
- 관리자 가이드
- 업로드 파일 크기 변경
- Server를 domain에 연결
- 참고 문헌
비동기 이벤트 기반의 Web Server인 nginx를 정리 합니다.
홈페이지 : http://www.nginx.net/
*매뉴얼 : http://nginx.org/en/docs/
라이선스 :
플랫폼 : C
nginx 개요
Nginx 설치
CentOS 6.5에 nginx 설치
'''Nginx 저장소 생성'''
vi /etc/yum.repos.d/nginx.repo
{| cellspacing="1" cellpadding="1" style="width: 100%;"
|-
| style="background-color: rgb(241, 241, 241);" | nginx
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
|}
'''Nginx 설치'''
{| cellspacing="1" cellpadding="1" style="line-height: 20.7999992370605px; width: 100%;"
|-
| style="background-color: rgb(241, 241, 241);" |
yum install nginx
|}
'''Nginx 설정 파일'''
/etc/nginx/ : 설정 파일 폴더
*nginx.conf
*conf.d/
/var/log/nginx/ : 로그 폴더
*access.log
*error.log
/usr/share/nginx/html/ : Document Root 폴더
'''기본 설정'''
vi /etc/nginx/nginx.conf
{| cellspacing="1" cellpadding="1" style="line-height: 20.7999992370605px; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
worker_processes 1; #--- core 수만큼 지정
gzip on;
|}
vi /etc/nginx/conf.d/default.conf
{| cellspacing="1" cellpadding="1" style="line-height: 20.7999992370605px; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
server_name ossnode101.ossbiz.co.kr;
|}
'''방화벽 설정 및 서비스 기동'''
{| cellspacing="1" cellpadding="1" style="line-height: 20.7999992370605px; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
setup #--- 방화벽에서 80/tcp port를 오픈 합니다.
service nginx restart
|}
브라우저에서 http://ossnode101.ossbiz.co.kr:80/ 으로 접속 합니다.
[File:Nginx init.png](File:Nginx init.png.md)
Windows에 nginx 설치
다운로드 사이트에서 nginx-1.16.0.zip 파일을 다운로드 합니다.
c:/appl/nginx1160/ 폴더에 압축을 해제 합니다.
.
cd c:/appl/nginx1160/
vi conf/nginx.conf
worker_processes 1; #--- core 수만큼 지정
gzip on;
# nginx -s [stop | quit | reopen | reload ]()
start nginx
#--- http://localhost/ 로 접속하여 확인 한다.
PHP를 설치한 후 Factcgi 방식으로 PHP 실행하는 방법
php-cgi -b 127.0.0.1:9000
cd c:/appl/nginx1160
vi conf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
./nginx -s reload
#--- http://localhost/~.php 로 접속하여 확인 한다.
Nginx 환경 설정
Rewrite 사용법
rewrite 문법은 아래와 같이 단순 합니다.
문법 : rewrite 정규표현식 대체문자열 flag
flag
- last : Rewrite 실행을 종료하고 변경된 URI로 다시 처리를 시작 합니다.
- break : Rewrite 처리를 종료 합니다. rewrite가 무한 반복 실행되는 것을 방지 합니다.
- redirect : 302 temporary redirect 처리를 합니다.
- permanent : 301 permanent redirect 처리를 합니다.
요청된 parameter는 rewrite 처리후에 변경된 URI 뒤에 자동으로 붙습니다.
Mediawiki Rewrite Rule 적용
Mediawiki를 사용할 때 URL rewrite 기능을 사용하면 편리한 점이 많습니다. 우선 긴 URL을 의미 있는 간단한 URL로 변경할 수 있고 폴더의 위치와 URL을 동일하게 유지할 필요도 없습니다.
서버 환경과 요구 사항
서버 환경
- Nginx 사용 중
- DOCUMENT_ROOT : /cloudnas/www/jopenbusiness/public_html/
- Mediawiki가 설치된 폴더 : /cloudnas/www/jopenbusiness/public_html/mediawiki/
요구 사항
- URL Rewrite 전 : http://www.jopenbusiness.com/'''mediawiki/index.php?title=SuiteCRM'''
- URL Rewrite 후 : http://www.jopenbusiness.com/'''mediawiki/SuiteCRM'''
URL Rewrite 설정
vi /etc/nginx/sites-available/jopenbusiness.conf
{| style="width: 98%; margin: 2px 2px 2px 2px; border: 0px solid black; border-spacing: 0px; border-collapse: collapse; padding: 2px 2px 2px 16px;"
|-
| style="width: 10px; margin: 2px; border: 1px solid gray; border-spacing: 0px; border-collapse: collapse; padding: 2px; font-size: 8px; line-height: normal; color: black; background-color: gray; vertical-align: middle;" |
| style="margin: 2px; border: 1px solid gray; border-spacing: 0px; border-collapse: collapse; padding: 2px 2px 2px 12px; font-size: 14px; line-height: normal; color: black; vertical-align: middle;" | location / {
'''rewrite ^/mediawiki(^?)(?:?(.))? /mediawiki/index.php?title=$1&$2 last;'''
index index.html index.htm index.php;
}
|}
vi /cloudnas/www/jopenbusiness/public_html/mediawiki/LocalSettings.php
{| style="width: 98%; margin: 2px 2px 2px 2px; border: 0px solid black; border-spacing: 0px; border-collapse: collapse; padding: 2px 2px 2px 16px;"
|-
| style="width: 10px; margin: 2px; border: 1px solid gray; border-spacing: 0px; border-collapse: collapse; padding: 2px; font-size: 8px; line-height: normal; color: black; background-color: gray; vertical-align: middle;" |
| style="margin: 2px; border: 1px solid gray; border-spacing: 0px; border-collapse: collapse; padding: 2px 2px 2px 12px; font-size: 14px; line-height: normal; color: black; vertical-align: middle;" | $wgScriptPath = "/mediawiki"; #--- Mediawiki가 설치된 폴더
$wgArticlePath = "/mediawiki/$1"; #--- URL 호출 방법
$wgUsePathInfo = true;
|}
참고 사이트
- https://www.mediawiki.org/wiki/Manual:Short_URL/wiki/Page_title_--_nginx_rewrite--root_access
- https://www.mediawiki.org/wiki/Manual:Short_URL/Apache
PHP 사용 설정
[PHP](PHP 5.2.5.md)를 설치 합니다.
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 20.7999992370605px; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
yum install php php-*
mkdir /var/lib/php/upload
chown apache:apache /var/lib/php/upload
|}
vi /etc/php.ini
{| cellspacing="1" cellpadding="1" style="line-height: 20.7999992370605px; color: rgb(0, 0, 0); font-family: sans-serif; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
[PHP]
cgi.fix_pathinfo = 0
upload_tmp_dir = "/var/lib/php/upload"
upload_max_filesize = 10M
post_max_size = 10M
[Date]
date.timezone = Asia/Seoul
Session
session.save_path = "/var/lib/php/session"
|}
PHP-FPM (FastCGI Process Manager) 서비스를 실행 합니다
{| cellspacing="1" cellpadding="1" style="line-height: 20.7999992370605px; color: rgb(0, 0, 0); font-family: sans-serif; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
service php-fpm restart
|}
Site를 설정 합니다.
{| cellspacing="1" cellpadding="1" style="line-height: 20.7999992370605px; color: rgb(0, 0, 0); font-family: sans-serif; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
mkdir -p /nas/www/ossnode101/public_html
mkdir -p /nas/www/ossnode101/logs
chown -R apache:apache /srv/www/ossnode101
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
cp /usr/share/nginx/html/* /nas/www/ossnode101/public_html
|}
vi /etc/nginx/nginx.conf
{| cellspacing="1" cellpadding="1" style="line-height: 20.7999992370605px; color: rgb(0, 0, 0); font-family: sans-serif; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
include /etc/nginx/conf.d/.conf;
include /etc/nginx/sites-enabled/.conf; #--- 이 라인을 추가 합니다.
|}
vi /etc/nginx/conf.d/default.conf
{| cellspacing="1" cellpadding="1" style="line-height: 20.7999992370605px; color: rgb(0, 0, 0); font-family: sans-serif; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
server_name nouse.ossbiz.co.kr;
|}
vi /etc/nginx/sites-available/ossnode101.conf
{| cellspacing="1" cellpadding="1" style="line-height: 20.7999992370605px; color: rgb(0, 0, 0); font-family: sans-serif; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
server {
server_name ossnode101.ossbiz.co.kr;
access_log /nas/www/ossnode101/logs/access.log;
error_log /nas/www/ossnode101/logs/error.log;
root /nas/www/ossnode101/public_html;
location / {
index index.html index.htm index.php;
}
location ~ .php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /nas/www/ossnode/public_html$fastcgi_script_name;
}
}
|}
sites-enabled에 ossnode101.conf를 추가 합니다.
{| cellspacing="1" cellpadding="1" style="line-height: 20.7999992370605px; color: rgb(0, 0, 0); font-family: sans-serif; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
ln -s /etc/nginx/sites-available/ossnode101.conf /etc/nginx/sites-enabled/ossnode101.conf
|}
vi /nas/www/ossnode101/public_html/phpinfo.php
{| cellspacing="1" cellpadding="1" style="line-height: 20.7999992370605px; color: rgb(0, 0, 0); font-family: sans-serif; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
<?php
phpinfo();
?>
|}
nginx를 재기동 합니다.
{| cellspacing="1" cellpadding="1" style="line-height: 20.7999992370605px; color: rgb(0, 0, 0); font-family: sans-serif; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
service php-fpm restart
service nginx restart
|}
브라우저에서 http://ossnode101.ossbiz.co.kr:80/phpinfo.php 으로 접속 합니다.
Tomcat 6 설정
[Apache Tomcat](Apache Tomcat.md) 설치
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 20.7999992370605px; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
yum install tomcat6 tomcat6-*
cp /usr/share/tomcat6/webapps/ROOT/.gif /nas/www/ossnode101/public_html
cp /usr/share/tomcat6/webapps/ROOT/.svg /nas/www/ossnode101/public_html
cp /usr/share/tomcat6/webapps/ROOT/*.ico /nas/www/ossnode101/public_html
|}
vi /etc/nginx/sites-available/ossnode101.conf #--- 아래 항목을 추가 합니다.
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 20.7999992370605px; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
location ~ .do$ {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ .jsp$ {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ^~/servlets/* {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
|}
'''방화벽 설정 및 서비스 기동'''
{| cellspacing="1" cellpadding="1" style="color: rgb(0, 0, 0); font-family: sans-serif; line-height: 20.7999992370605px; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
setup #--- 방화벽에서 8080/tcp port를 오픈 합니다.
service tomcat6 restart
|}
http://ossnode101.ossbiz.co.kr/index.jsp 사이트로 접속하여 Tomcat 화면을 표시해 봅니다.
Nginx에 UTF-8 설정
[Nginx에 UTF-8 설정](문자셋과 인코딩.md#Nginx.EC.97.90.EC.84.9C UTF-8 .EC.84.A4.EC.A0.95.md)
관리자 가이드
업로드 파일 크기 변경
vi /etc/php.ini
{| cellspacing="1" cellpadding="1" style="font-size: 14px; color: rgb(37, 37, 37); font-family: sans-serif; line-height: 20.7999992370605px; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
post_max_size = 10M
upload_max_filesize = 10M
|}
vi /etc/nginx/sites-available/jopenbusiness.conf
{| cellspacing="1" cellpadding="1" style="font-size: 14px; color: rgb(37, 37, 37); font-family: sans-serif; line-height: 20.7999992370605px; width: 771px;"
|-
| style="background-color: rgb(241, 241, 241);" |
client_max_body_size 10M; #--- server, location, http 내에 설정할 수 있습니다.
|}
Server를 domain에 연결
http://docs.jopenbusiness.com/ 요청을 http://docs.jopenbusiness.com:4000/ 서비스로 연결 합니다. server를 domain으로 구분하고 proxy_pass를 사용하여 4000 port로 연결 합니다.
server {
listen 80;
server_name docs.jopenbusiness.com docs.obcon.biz docs.obcon.co.kr; #--- domain과 연결
root /work/appl/obcon_scada/manual;
charset UTF-8;
location / {
proxy_no_cache 1;
proxy_pass http://127.0.0.1:4000; #--- 다른 서비스 호출
}
}
참고 문헌
[Apache HTTP Server](Apache HTTP Server.md)
NGINX 모듈 제작하기, 2012.11
분류: [Web Server](분류_Web Server.md)