1. 程式人生 > >【原創】運維基礎之Nginx(1)簡介、安裝、使用

【原創】運維基礎之Nginx(1)簡介、安裝、使用

官方:http://nginx.org

nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev. For a long time, it has been running on many heavily loaded Russian sites including Yandex, Mail.Ru, VK, and Rambler. According to Netcraft, nginx served or proxied 25.89% busiest sites in December 2018. Here are some of the success stories: Dropbox, Netflix, Wordpress.com, FastMail.FM.

Nginx是一個Http伺服器、反向代理伺服器、郵件代理伺服器、通用TCP/UDP代理伺服器,目前已經佔據25%的市場份額。

一 安裝

官方下載頁面:http://nginx.org/en/download.html

下載編譯過程如下:

# wget http://nginx.org/download/nginx-1.14.2.tar.gz
# tar xvf nginx-1.14.2.tar.gz
# cd nginx-1.14.2


# ./configure --prefix=/data/nginx-1.14.2 --with-http_ssl_module
# make
# make install


# ls /data/nginx-1.14.2/
conf html logs sbin
# ls /data/nginx-1.14.2/sbin
nginx
# ls /data/nginx-1.14.2/conf
fastcgi.conf fastcgi_params koi-utf mime.types nginx.conf scgi_params uwsgi_params win-utf
fastcgi.conf.default fastcgi_params.default koi-win mime.types.default nginx.conf.default scgi_params.default uwsgi_params.default

configure詳細引數詳見官方文件:http://nginx.org/en/docs/configure.html

configure過程可能報錯:

1)./configure: error: C compiler cc is not found

yum install gcc

2)./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

yum install pcre-devel

3)./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.

yum install zlib-devel

4)./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.

yum install openssl-devel

二 使用

1 配置

 預設配置:$NGINX_HOME/conf/nginx.conf

如果改為其他名字,需要在啟動時通過-c制定

1)埠

    server {

        listen       80;

        server_name  localhost;

可以修改埠,如果是80埠,必須使用root啟動,因為只有root才能使用1024以下埠;

2)反向代理--負載均衡

  upstream test_backend {
    ip_hash;
    server 192.168.0.54:8080;
    server 192.168.0.55:8080;
   }

    location / {
        proxy_pass   http://test_backend; 

可以配置多個upstream,每個upstream指向一組後端伺服器,比如一組tomcat,然後在server中制定哪些location的請求轉發給哪些upstream,實現負載均衡;

 

完整配置如下:

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

 

    upstream test_backend {

         ip_hash;

         server 192.168.0.54:8080;

         server 192.168.0.55:8080;

    }

 

    server {

        listen       80;

        server_name  localhost;

 

         location / {

             proxy_pass http://test_backend;

         }       

    }

}

2 命令

# sbin/nginx -h

nginx version: nginx/1.14.2

Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]

 

Options:

  -?,-h         : this help

  -v            : show version and exit

  -V            : show version and configure options then exit

  -t            : test configuration and exit

  -T            : test configuration, dump it and exit

  -q            : suppress non-error messages during configuration testing

  -s signal     : send signal to a master process: stop, quit, reopen, reload

  -p prefix     : set prefix path (default: /data/nginx-1.14.2/)

  -c filename   : set configuration file (default: conf/nginx.conf)

  -g directives : set global directives out of configuration file

2.1 啟動

# nginx -c conf/nginx.conf

啟動之後程序如下:

# ps aux|grep nginx
root 3072 0.0 0.0 45852 1956 ? Ss 20:11 0:00 nginx: master process sbin/nginx -c conf/nginx.conf
nobody 3218 0.0 0.0 48396 2552 ? S 20:14 0:00 nginx: worker process

2.2 停止

# nginx -c conf/nginx.conf -s stop

2.3 重新整理配置

# nginx -c conf/nginx.conf -s reload