CONTENT
  • CHANGES
Szukaj
counter

#top Instalacja


Instalację serwera Nginx można wykonać na różne sposoby: od kompilacji ze źdródeł poprzez instalację pojedynczych paczek rpm za pomocą polecenia rpm skończywszy na instalacja z użyciem menedżera pakietów, który zainstaluje wszystkie niezbędne paczki wraz zależnościami.
Celem niniejszego dokumentu nie jest rozważanie różnych metod instalacji tylko nieco usprawnienie użyteczności konfiguracji serwera Nginx po zainstalowaniu oraz wprowadzenie porządku / hierarchi położenia plików z których korzysta usługa w strukturze katalogowej.
Zgodnie definicją FHS (en.wiki, pl.wiki): katalog /srv zawiera: Data for services provided by this system toteż jako katalog w którym Nginx będzie przechowywał dane został wybrany: /srv/nginx i zostanie on utworzony z odpowiednimi atrybutami wraz ze stosownymi podkatalogami:
/srv/nginx/error - z przeznaczeniem na lokalizację stron kodów błędów HTTP (poprzednio /usr/share/nginx/html),
/srv/nginx/vhosts - z przeznaczeniem na virtualne domeny vhosts serwerwowane przez serwer (nowoutworzony).
Wszystko to zostało opisane poniżej.



#top Postinstalacyjna konfiguracja


#top Set default setting in config file


# sed 's,^\(.*access_log.*\)$,    log_format  combined  '\''$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'\'';\n\n\1,g' -i /etc/nginx/nginx.conf
# nginx: [emerg] duplicate "log_format" name "combined" in /etc/nginx/nginx.conf:28
# The configuration always includes the predefined "combined" format:
sed 's,^\(.*access_log.*\)$,    log_format  vcombined  '\''$host $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'\'';\n\n\1,g' -i /etc/nginx/nginx.conf



#top Create directory root structure


mkdir -p /srv/nginx/error
cp -av /usr/share/nginx/html/404.html /srv/nginx/error/404.html
cp -av /usr/share/nginx/html/50x.html /srv/nginx/error/50x.html
cp -av /usr/share/nginx/html/nginx-logo.png /srv/nginx/error/nginx-logo.png
cp -av /usr/share/nginx/html/poweredby.png /srv/nginx/error/poweredby.png





#top Enable virtual hosts


mkdir /etc/nginx/vhosts
sed 's,^\(.*include.*/etc/nginx/conf.d/.*\)$,\1\n    # Virtual hosts\n    include /etc/nginx/vhosts/*.conf;,g' -i /etc/nginx/nginx.conf



#top Comment out default vhost


Poniższe kroki należy wykonać dla nginx w wersji poniżej 1.0, wersje powyżej 1.0 zawierają już definicję domyślnego virtual hosta w osobnym pliku /etc/nginx/conf.d/default.conf.
-------------------------------------------------
nginx <= 0.8.55 (CentOS 5.*)
-------------------------------------------------

W głównym pliku konfiguracyjnym Nginx /etc/nginx/nginx.conf należy zakomentować konfigurację domyślnego virtual hosta, którego definicja została przeniesiona do osobnego pliku /etc/nginx/vhosts/default.conf. Po wprowadzeniu zmian wykomentowana definicja virtual hosta znajdująca się w pliku /etc/nginx/nginx.conf będzie wyglądać analogicznie jak poniżej.
[...]
    #
    # The default server
    #
#    server {
#        listen       80;
#        server_name  _;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

#        location / {
#            root   /usr/share/nginx/html;
#            index  index.html index.htm;
#        }

#        error_page  404              /404.html;
#        location = /404.html {
#            root   /usr/share/nginx/html;
#        }

        # redirect server error pages to the static page /50x.html
        #
#        error_page   500 502 503 504  /50x.html;
#        location = /50x.html {
#            root   /usr/share/nginx/html;
#        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
#    }
[...]


Poniższe kroki należy wykonać dla nginx w wersji powyżej 1.0, wersje powyżej 1.0 zawierają już definicję domyślnego virtual hosta w osobnym pliku /etc/nginx/conf.d/default.conf.
-------------------------------------------------
nginx >= 1.0.15 (CentOS 6.*)
-------------------------------------------------
Comment out default vhost in /etc/nginx/conf.d/default.conf
sed 's,^,#,g' -i /etc/nginx/conf.d/default.conf



#top Configure default virtual host


Zgodnie z dokumentacją dotyczącą przetwarzania ządania przez nginx:
http://nginx.org/en/docs/http/request_processing.html
The default_server parameter has been available since version 0.8.21.
In earlier versions the default parameter should be used instead.

default vhost require: listen=default_server + server_name=_
------------------------------------------------------------------------------------------------------
    listen       80 default_server;
    server_name  _;

Po wprowadzeniu stosownych zmian konfiguracja domyślnego virtual host powinna przedstawiać się analogicznie do poniższej:
#
# The default server
#
server {
    #limit_conn   myzone  10;
    listen       80 default_server;
    server_name  _;
    server_name  localhost;
    server_name  127.0.0.1;

    #charset koi8-r;

    access_log  /var/log/nginx/default.access.log  vcombined;
    error_log  /var/log/nginx/default.error.log  error;

    location / {
        root   /srv/nginx/vhosts/default;
        index  index.html index.htm;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /srv/nginx/error;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /srv/nginx/error;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}

create needed DocumentRoot for default virtual host:
mkdir -p /srv/nginx/vhosts/default
echo "vhosts / default ($HOSTNAME)" > /srv/nginx/vhosts/default/index.html
echo "vhosts / default ($HOSTNAME)" > /srv/nginx/vhosts/default/default.html



#top Create second $HOSTNAME virtual host


cat >> /etc/nginx/conf.d/virtual.conf << EOF
#
# $HOSTNAME
#
server {
    #limit_conn   myzone  10;
    listen       80;
    server_name  $HOSTNAME;

    #charset koi8-r;

    access_log  /var/log/nginx/${HOSTNAME//./_}.access.log  main;
    error_log  /var/log/nginx/${HOSTNAME//./_}.error.log  error;

    location / {
        root   /srv/nginx/vhosts/${HOSTNAME//./_};
        index  index.html index.htm;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /srv/nginx/error;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /srv/nginx/error;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}
EOF

create needed DocumentRoot for $HOSTNAME virtual host

mkdir -p /srv/nginx/vhosts/$HOSTNAME
echo "vhosts / $HOSTNAME" > /srv/nginx/vhosts/$HOSTNAME/index.html
echo "vhosts / $HOSTNAME" > /srv/nginx/vhosts/$HOSTNAME/$HOSTNAME.html



#top Create ssl $HOSTNAME virtual host


cat >> /etc/nginx/conf.d/ssl.conf << EOF
#
# $HOSTNAME:443 - HTTPS server configuration
#
server {
    listen       443;
    server_name  $HOSTNAME;

    access_log  /var/log/nginx/${HOSTNAME//./_}.ssl.access.log  main;
    error_log  /var/log/nginx/${HOSTNAME//./_}.ssl.error.log  error;

    ssl                  on;
    ssl_certificate      /etc/pki/tls/certs/$HOSTNAME.crt;
    ssl_certificate_key  /etc/pki/tls/certs/$HOSTNAME.key;

#    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers   on;

    location / {
        root   /srv/nginx/vhosts/$HOSTNAME;
        index  index.html index.htm;
    }

    error_page  404              /404.html;

    location = /404.html {
        root   /srv/nginx/error;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /srv/nginx/error;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}
EOF



#top Start nginx server


/etc/init.d/nginx start

tail -f /var/log/nginx/error.log




Zmodyfikowany ostatnio: 2015/02/22 11:42:52 (9 lat temu), textsize: 10,5 kB, htmlsize: 17,5 kB

Zapraszam do komentowania, zgłaszania sugestii, propozycji, własnych przykładów, ...
Dodaj komentarzKomentarze użytkowników