Nginx Server 1.8 에서 HTTPS 적용하기

Linux/CentOS 2015. 11. 11. 11:41 by 후뤼한잉여

Nginx Server 1.8 에서 HTTPS 적용하기

1) 개요

Nginx Server에 HTTPS 적용한 내용을 정리하기 위해 작성되었습니다.

2) 설정 방법

  1. SSL 인증서 생성하기

    GitLab에 HTTPS 보안 적용을 위한 OpenSSL 설정하기 참고하여 생성

  2. Nginx 설정파일 수정하기
    sudo vi /opt/nginx/conf/nginx.conf
    
    nginx.conf파일에 수정할 내용
    server { //HTTPS server 관련 전체 주석 해제
         .
         .
         listen 443 ssl;
         .
         .
         server_name [도메인 이름];
         ssl_certificate [인증서 디렉토리]/[인증서 이름].crt;
         ssl_certificate_key [인증서 디렉토리]/[인증서 이름].key;
         .
         .
    }
    
    • HTTP으로 접속시 HTTPS로 리다이렉트 하는 방법
      server { //HTTP server 관련 부분에 추가
            .
            .
            return 301 https://$host$request_uri;
      }
      
  3. 방화벽 해제하기
    sudo firewall-cmd --add-service=https --permanent
    sudo firewall-cmd --reload
    
  4. Nginx 재시작
    service nginx restart
    

CentOS 7 에 Nginx Server 1.8 설치하기

Linux/CentOS 2015. 11. 11. 11:31 by 후뤼한잉여

CentOS 7 에 Nginx Server 1.8 설치하기

1) 개요

Nginx Server 설치 한 내용을 정리하고자 작성되었습니다.

2) 설치방법

  1. 의존패키지 설치하기
    yum -y install gcc g++ cpp gcc-c++ pcre-devel openssl openssl-devel gd gd-devel wget net-tools
    
  2. Nginx 설치파일 다운로드
    wget http://nginx.org/download/nginx-1.8.0.tar.gz
    tar xvfz [설치파일].tar.gz
    
  3. Nginx 설치하기

    cd [설치파일 압축 해제된 디렉토리]
    

    3-1. Configure 설정하기 (prefix등 변경하고 설치했다가 무슨 이유인지 잘 안되서 그냥 저 경로로 설치함..)

    sudo ./configure --prefix=/opt/nginx \
    --conf-path=/opt/nginx/conf/nginx.conf \
    --sbin-path=/opt/nginx/sbin/nginx \
    --lock-path=/var/lock/nginx.lock \
    --pid-path=/var/run/nginx.pid \
    --http-client-body-temp-path=/var/lib/nginx/body \
    --http-proxy-temp-path=/var/lib/nginx/proxy \
    --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
    --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
    --http-scgi-temp-path=/var/lib/nginx/scgi \
    --http-log-path=/opt/nginx/log/access.log \
    --error-log-path=/opt/nginx/log/error.log \
    --with-http_addition_module \
    --with-http_degradation_module \
    --with-http_flv_module \
    --with-http_gzip_static_module \
    --with-http_image_filter_module \
    --with-http_mp4_module \
    --with-http_random_index_module \
    --with-http_realip_module \
    --with-http_ssl_module \
    --with-http_stub_status_module \
    --with-http_sub_module \
    --with-http_realip_module \
    --user=nginx \
    --group=nginx
    

    3-2. 컴파일 및 설치

    sudo make
    sudo make install
    

    3-3. 컴파일시 생성안되는 디렉토리 추가 생성

    sudo mkdir -p /var/lib/nginx
    

    3-4. 서비스에 등록하기

    sudo vi /etc/init.d/nginx
    

    nginx파일에 입력할 내용

    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemin
    #
    # chkconfig:   - 85 15
    # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /opt/nginx/conf/nginx.conf
    # pidfile:     /var/run/nginx.pid
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    
    nginx="/opt/nginx/sbin/nginx"
    prog=$(basename $nginx)
    
    NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
    
    lockfile=/var/lock/subsys/nginx
    
    start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
    }
    
    restart() {
        configtest || return $?
        stop
        start
    }
    
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $nginx -HUP
        RETVAL=$?
        echo
    }
    
    force_reload() {
        restart
    }
    
    configtest() {
      $nginx -t -c $NGINX_CONF_FILE
    }
    
    rh_status() {
        status $prog
    }
    
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
    
    case "$1" in
        start)
            rh_status_q && exit 0
            $1
            ;;
        stop)
            rh_status_q || exit 0
            $1
            ;;
        restart|configtest)
            $1
            ;;
        reload)
            rh_status_q || exit 7
            $1
            ;;
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            rh_status_q || exit 0
                ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
            exit 2
    esac
    
  4. 서비스 파일에 실행권한 부여하기

    sudo chmod +x /etc/init.d/nginx
    
  5. 방화벽 설정하기
    firewall-cmd --add-service=http --permanent
    firewall-cmd --reload
    
  • Nginx 실행 / 종료 명령어
    • 실행 명령어
      sudo service nginx start
      
    • 종료 명령어
      sudo service nginx stop
      
    • 재시작 명령어
      sudo service nginx restart
      

Apache Web Server 2.4 에 정적파일 캐싱하기

Linux/CentOS 2015. 11. 11. 11:10 by 후뤼한잉여

Apache Web Server 2.4 에 정적파일 캐싱하기

1) 개요

정적파일에 대해서 수정되지 않은 파일을 다운로드 받게하는 트래픽을 없애기 위해 설정을 한 내용을 정리하고자 작성되었습니다.

2) 설정하기

  1. Apache 설정 파일 수정하기
    vi [Apache 설치된 디렉토리]/conf/httpd.conf
    
    httpd.conf에 수정할 내용
    LoadModule expires_module modules/mod_expires.so //주석해제
    <IfModule mod_expires.c>
         ExpiresActive On
         ExpiresByType image/png "modification  plus 1 month"
         ExpiresByType text/html "modification  plus 1 month"
         ExpiresByType image/gif "modification  plus 1 month"
         ExpiresByType image/jpg "modification  plus 1 month"
         ExpiresByType image/jpeg "modification  plus 1 month"
         ExpiresByType application/javascript "modification  plus 1 month"
         ExpiresByType text/css "modification  plus 1 month"
         ExpiresByType application/vnd.ms-cab-compressed "modification  plus 1 month"
         ExpiresByType application/x-msdownload "modification  plus 1 month"
    </IfModule>
    
    • HTTP 헤더에 Expires 헤더값을 설정하는 모듈이다.
    • Type은 MIME Type이므로 본인이 설정하고 싶은 내용을 설정한다.
    • modification은 파일이 수정이 되면 다운 받을 수 있는 옵션이다.
    • modification대신 access로 지정하면 무조건 설정한 시간 이후 다운 받을 수 있는 옵션이다.
    • month 외에도 years, weeks, days, hours, minutes, seconds가 있다.
    • 자세한 내용은 Apache 문서를 참고
  2. Apache 재시작
Nav