NGINX 在Linux下的常规安装

Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。如下介绍如何在Ubuntu中编译安装一个nginx服务.

安装依赖包

sudo apt-get install gcc
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install zlib1g zlib1g-dev
sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt-get install zlib1g
sudo apt-get install zlib1g.dev

下载nginx

下载必要组件

  • nginx下载地址http://nginx.org/en/download.html
  • pcre库下载地址,nginx需要http://sourceforge.net/projects/pcre/files/pcre/
  • zlib下载地址,nginx需要http://www.zlib.net/
  • openssl下载地址,nginx需要https://github.com/openssl/openssl
cd /opt
sudo mkdir nginx
sudo chown hfcai:hfcai nginx
cd nginx
wget http://nginx.org/download/nginx-1.9.9.tar.gz
tar -xvf nginx-1.9.9.tar.gz

编译nginx

进入nginx目录,进行配置安装

$ ./configure \
 --prefix=/usr/local/nginx \
 --with-http_ssl_module \
 --with-http_flv_module \
 --with-http_stub_status_module \
 --with-http_gzip_static_module \
 --with-pcre=../pcre-8.39 \
 --with-zlib=../zlib-1.2.8 \ 
 --with-openssl=../openssl-master
$ make && sudo make install -j 8

nginx操作

#查看版本号
nginx -V
#启动
nginx -c /etc/nginx/nginx.conf
#快速停止或关闭Nginx
nginx -s stop
# 正常停止和关闭
nginx -s quit
# 配置文件修改重装
nginx -s reload

配置

nginx.conf配置文件,基本就分为以下几块:
在这里插入图片描述

main
events   {
  ....
}
http        {
  ....
  upstream myproject {
    .....
  }
  server  {
    ....
    location {
        ....
    }
  }
  server  {
    ....
    location {
        ....
    }
  }
  ....
}

nginx配置文件主要分为六个区域:

  • main(全局设置)
  • events(nginx工作模式)
  • http(http设置)
  • sever(主机设置)
  • location(URL匹配)
  • upstream(负载均衡服务器设置)
1、main模块

下面时一个main区域,他是一个全局的设置:

user nobody nobody;
worker_processes 2;
error_log  /usr/local/var/log/nginx/error.log  notice;
pid        /usr/local/var/run/nginx/nginx.pid;
worker_rlimit_nofile 1024;

  • user: 指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。
  • worker_processes:指定了Nginx要开启的子进程数。每个Nginx进程平均耗费10M~12M内存。
  • error_log: 定义全局错误日志文件。日志输出支持debug、info、notice、warn、error、crit几个级别设置。
  • pid:指定进程id的存储文件位置。
  • worker_rlimit_nofile:指定一个nginx进程可以打开的最多文件描述符数目,这里是65535,需要使用命令“ulimit -n 65535”来设置。
2、events模块

events模块来用指定nginx的工作模式和工作模式及连接数上限,一般是这样:

events {
    use epoll; #Linux平台
    worker_connections  1024;
}
  • use:指定Nginx的工作模式,支持使用:select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中,对于Linux系统,epoll工作模式是首选。
  • worker_connections:定义Nginx每个进程的最大连接数,默认1024。最大客户端连接数由worker_processes和worker_connections决定。

3、http模块

负责HTTP服务器相关属性的配置,它里面的server和upstream子模块,至关重要,与反向代理和负载均衡以及虚拟目录相辅相成。

http{
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /usr/local/var/log/nginx/access.log  main;
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
    keepalive_timeout  10;
    #gzip  on;
    upstream myproject {
        .....
    }
    server {
        ....
    }
}
  • include:设定文件的mime类型,类型在配置文件目录下的mime.type文件定义,来告诉nginx来识别文件类型。
  • default_type:默认mimetype类型,当文件未定义时使用这种方式。
  • log_format:设置日志的格式
  • access_log:纪录每次的访问日志的文件地址
  • sendfile:开启高效文件传输模式。将tcp_nopushtcp_nodelay两个指令设置为on用于防止网络阻塞。
  • keepalive_timeout:设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接。
4、 server模块

sever模块是http的子模块,它用来定一个虚拟主机,server标志定义虚拟主机开始。我们先讲最基本的配置,这些在后面再讲。

server {
        listen       8080;
        server_name  localhost 192.168.12.10 www.yangyi.com;
        # 全局定义,如果都是这一个目录,这样定义最简单。
        root   /Users/yangyi/www;
        index  index.php index.html index.htm; 
        charset utf-8;
        access_log  usr/local/var/log/host.access.log  main;
        aerror_log  usr/local/var/log/host.error.log  error;
        ....
}
  • listen:指定虚拟主机的服务端口。
  • server_name:指定IP地址或者域名,多个域名之间用空格分开。
  • root :表示在这整个server虚拟主机内,全部的root web根目录。注意要和locate {}下面定义的区分开来。
  • index:定义访问的默认首页地址。
  • charset:设置网页的默认编码格式。
  • access_log:指定此虚拟主机的访问日志存放路径。
5、location模块

location模块是nginx中用的最多的,也是最重要的模块了,什么负载均衡啊、反向代理啊、虚拟域名啊都与它相关。它也提供了强大的正则匹配功能,也支持条件判断匹配,用户可以通过location指令实现Nginx对动、静态网页进行过滤处理。

通过location可以帮助我们设置默认首页和虚拟机目录,如下:

location / {
            root   /Users/yangyi/www;
            index  index.php index.html index.htm;
        }

如上配置的location / 表示匹配访问根目录。root用于指定访问根目录时,虚拟主机的web目录,这个目录可以是相对路径(相对路径是相对于nginx的安装目录)。也可以是绝对路径。

 #反向代理配置
  location /itcast/ {
             proxy_pass http://127.0.0.1:12345;
             proxy_set_header X-real-ip $remote_addr;
             proxy_set_header Host $http_host;
         }


  #采用uwsgi方式
  location /python/ {
             include uwsgi_params;
             uwsgi_pass 127.0.0.1:33333;
         }



    #访问nginx本机目录的文件
    location / {
            root   /home/itcast/xwp/itcast/;
            index  index.html index.htm;
        }

    location  /static/ {
             alias /var/static/;
        }

6、upstram 模块

upstream模块负债负载均衡模块,通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。

upstream test.com{
    ip_hash;
    server 192.168.123.1:80;
    server 192.168.123.2:80 down;
    server 192.168.123.3:8080  max_fails=3  fail_timeout=20s;
    server 192.168.123.4:8080;
}

通过upstream指定了一个负载均衡器的名称test.com。这个名称可以任意指定,在后面需要的地方直接调用即可。其中ip_hash是其中的一种负载均衡调度算法。,nginx的负载均衡目前支持如下几种负载均衡调度算法:

  • weight:轮询是默认配置的算法,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。weight。指定轮询权值,weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。
  • ip_hash:每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。
  • fair:此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。
  • url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。

HTTP Upstream模块中,可以通过server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。常用的状态有:

  • down:不参与负载均衡
  • backup:预留的备份机器
  • max_fails:允许请求失败的次数,默认为1。
  • fail_timeout:在经历了max_fails次失败后,暂停服务的时间。

注意 当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。 nginx的worker_rlimit_nofile达到上限时,再有客户端链接报502错误. 用了log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径。

卸载nginx

sudo apt-get --purge autoremove nginx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖蔡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值