lighttpd

목차 1. 개요 2. lighttpd 설정 파일 3. SSL 설정 및 HTTP2 protocol 지원 4. 안녕에서 제공하는 기능 및 추가 모듈 5. PHP 연동 6. JAVA(tomcat)/Python/Perl 연동 7. lighttpd 구동

1. 개요

안녕 리눅스의 lighttpd는 1.4 branch를 제공 합니다.

lighttpd를 사용하는 것 보다 nginx를 사용하는 것을 권고 합니다.

lighttpd는 1.4 branch는 현재 7여년 동안 개발이 정체되어 있고 새로운 기술들이 반영되어진 2.0이 아직 출시 단계에도 이르지 못한 상황이므로, 동일하게 single thread model인 nginx를 선택하는 것이 더 좋습니다.

2. lighttpd 설정 파일

  [root@an3 ~]$ tree /etc
  /etc
  ├── lighttpd
     ├── autoindex.conf
     ├── conf.d
        ├── Default.conf
        ├── README
        └── vhost.conf
     ├── lighttpd.conf
     └── mime.conf
  ├── logrotate.d
     └── lighttpd
  └── sysconfig
      ├── lighttpd
      └── lighttpd-monitor
  • /etc/lighttpd/lighttpd.conf 는 동작에 필요한 최소한의 설정만을 가지고 있습니다. 수정하지 않도록 합니다..

  • /etc/lighttpd/conf.d에 사용자 설정을 추가/변경 하도록 합니다. lighttpd.conf의 설정을 변경하고자 한다면, 이곳에서 설정을 하면 overwrite가 됩니다.

  • /etc/logroate.d/lighttpd파일에 log rotate 설정이 있습니다.

  • /etc/sysconfig/lighttpd 파일에 lighttpd 구동을 위한 설정이 있습니다.

  • /etc/sysconfig/lighttpd-monitor/usr/sbin/lighttpd-monitor 명령을 실행하는데 필요한 옵션값들이 설정 되어 있습니다. 이에 관련해서는 3.5 Web Monitor agent 문서에서 기술 합니다.

3. SSL 설정 및 HTTP2 protocol 지원

설정 파일의 예제는 다음과 같습니다.

  $SERVER["socket"] == ":443" {
      ssl.engine             = "enable"
      ssl.use-sslv2          = "disable"
      ssl.use-sslv3          = "disable"
      ssl.honor-cipher-order = "enable"
      ssl.cipher-list = "ECDH+AESGCM:ECDH+AES256:ECDH+AES128:ECDH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL"
      ssl.pemfile = "/etc/pki/lighttpd/annyung-sample.org.pem"
      ssl.ca-file = "/etc/pki/lighttpd/startssl-sub.class2.server.ca.sha2.pem"
  }

lighttpd의 인증서는 다음과 같이 생성을 하면 됩니다.

먼저 구동시에 key 암호를 물어보기 때문에, 암호를 제거한 key file을 생성 합니다.

  [root@an3 ~]$ openssl rsa -in annyung-sample.org.key -out annyung-sample.org.decrypt.key

다음 key file과 crt 파일을 합쳐서 lighttpd에서 사용할 인증서를 생성 합니다.

  [root@an3 ~] cat annyung-sample.org.decrypt.key annyung-sample.org.crt > annyung-sample.org.pem

chain 인증서가 여러개 일 경우, 인증서 pem 파일(여기서는 annyung-sample.org.pem)에 합치면 됩니다.

lighttpd 1.4 branch는 spdy와 http2를 지원하지 않습니다.

4. 안녕에서 제공하는 기능 및 추가 모듈

  1. include 지시자에 astrik를 사용할 수 있습니다. 파일이 존재하지 않아도 error가 발생하지 않습니다.

    include "conf.d/*.conf"

    http://redmine.lighttpd.net/issues/1221 참조

  2. Apache style의 KeepAlive reponse header를 지원합니다.

    Connection: Keep-Alive
    Keep-Alive: timeout=60, max=1000

    http://redmine.lighttpd.net/issues/1284 참조

  3. 404 error page를 URL로 지정할 있습니다. 이는 외부 404 page를 지정할 경우에 200으로 처리되는 문제를 해결하기 위하여 patch 되었습니다.

  4. TCP backlog를 변경할 수 있습니다. (기존은 코드에 1024로 hard coding 되어 있습니다.)

    server.backlog = 1024
  5. mod_dirlisting 의 기능이 향상 되었습니다.

    • dir-listing.gallery

      • listing시 image 파일이 존재하면 <img> tag로 출력

      • 파일 이름이 cover 또는 preview-000 형식일 경우, cover mode로 출력

    • dir-listing.encoding

      • 문서의 charset을 <meta> tag로 지정

    • dir-listing.html-lang

      • <html lang="VALUE">

    • dir-listing.urlencode

      • listing file link를 urlencode 하여 출력 (기본값: enable)

    • dir-listing.external-js

      • 외부 javascript url을 삽입

  6. 3rd party module

5. PHP 연동

  server.module         += ("mod_fastcgi")
  fastcgi.debug          = 0
  fastcgi.map-extension  = ( ".kldp" => ".php" )
  fastcgi.server         = (
      ".php" => (
          (
            "host" => "127.0.0.1",
            "port" => 9000,
            "broken-scriptfilename" => "enable",
            "allow-x-send-file" => "enable"
          )
      )
  )

lighttpd 문서상, TCP가 아닌 unix domain soecket으로도 fastcgi 연결이 가능하다고 되어 있으나, 실상은 동작하지 않는다. 그러므로 PHP-FPM을 lighttpd와 연동을 하려면 PHP-FPM의 listen을 TCP로 설정해야 한다.

6. JAVA(tomcat)/Python/Perl/CGI 연동

6.1. tomcat

  • proxy module을 이용 (ajp 지원 안함)

  • http://annyung-sample.org/srv/ 를 tomcat 에 연동.

       server.module         += ("mod_proxy")
    
       $HTTP["host"] == "annyung-sample.org" {
           $HTTP["url"] =~ "^/srv/" {
               proxy.server = (
                   "" => (
                       "tomcat" => (
                           "host" => "127.0.0.1",
                           "port" => 8080,
                           "fix-redirects" => 1
                       )
                   )
               )
           }
        }

6.2. python django

6.3. perl

6.3.1. fastcgi 연동

6.3.2. CGI 연동

  • 6.4. CGI 연동을 참조 하십시오.

6.4. CGI 연동

    server.module      += ("mod_cgi")
    server.breakagelog  = "/var/log/lighttpd/breakage.log"
    cgi.assign = (
        ".pl"  => "/usr/bin/perl",
        ".py"  => "/usr/bin/python",
        ".cgi" => "/usr/bin/perl"
    )

http://redmine.lighttpd.net/projects/1/wiki/docs_modcgi 참조

7. lighttpd 구동

간단한 lighttpd control 방법에 대하여 기술 합니다.

  • 부팅시 lighttpd 시작하도록 설정

    [root@an3 ~]$ service lighttpd enable
    [root@an3 ~]$ # 또는
    [root@an3 ~]$ ntsysv-systemd
  • 부팅시 lighttpd 시작 하지 않도록 설정

    [root@an3 ~]$ service lighttpd disable
    [root@an3 ~]$ # 또는
    [root@an3 ~]$ ntsysv-systemd
  • lighttpd 시작

    [root@an3 ~]$ service lighttpd start
  • lighttpd 정지

    [root@an3 ~]$ service lighttpd stop
  • lighttpd 재시작

    [root@an3 ~]$ service lighttpd restart
  • lighttpd 상태 보기

    [root@an3 ~]$ service lighttpd status

Last updated